ESDF_Keyboard_Setting_On: ESDF Keyboard ON | |
ESDF_Keyboard_Setting_Off: ESDF Keyboard OFF | |
Achievement_Underdragon_No_Zapping: No Zapping! | |
Menu_Numeric_XP_On: Numeric XP ON | |
Menu_Numeric_XP_Off: Numeric XP OFF | |
Dungeon_Rescue: Dungeon Rescue | |
Achievement_Rescued_Granma_Fat: Overweight Rescue | |
Achievement_Finished_Underworld_Zombie: Zombie Ending | |
Achievement_Finished_Underworld_Robot: Robot Ending | |
LEVEL_DESC_SPEEDRUN: Cemetery #0 of #1 |
#pragma once | |
#include "RuntimeImGui.h" | |
#include "RuntimeInclude.h" | |
RUNTIME_MODIFIABLE_INCLUDE; | |
#include "IconsFontAwesome.h" // from https://github.com/juliettef/IconFontCppHeaders | |
#include "PlatformUtils.h" | |
namespace ImGui |
After solving the compaction puzzle for parallel processing of values in a partitioned stream, the path to a screenspace CSG quadtree kernel is now open.
Instead of separate tiles, products and factors, we now keep a single array of factors, of which each factor also has a product index and a tile coordinate. We operate on a 256x256 tile so our tile coordinates fit into 16 bit, and allow only a maximum of 65536 products for this tile, with 2^31 addressable brushes. A factor then requires only 8 bytes: 2 bytes for its product index, 2 bytes for its tile coordinate and 4 bytes for its signed brush id.
We seed the array with all factors that matter for this 256x256 tile, sorted by tile coordinate and product index so that factors which belong to the same product are packed together, and all products which belong to the same tile are packed together as well.
We also init a brush id image with tile size 1x1.
In the beginning, there is typically
diff --git a/imgui.cpp b/imgui.cpp | |
index 3dd3d3f..0a0e467 100644 | |
--- a/imgui.cpp | |
+++ b/imgui.cpp | |
@@ -2037,6 +2037,7 @@ static bool NavScoreItem(ImRect cand) | |
// FIXME-NAVIGATION: Introducing various biases toward typical imgui uses cases, but we don't have any rigorous proof of their effect now. | |
float dbx = NavScoreItemDistInterval(cand.Min.x, cand.Max.x, curr.Min.x, curr.Max.x); | |
float dby = NavScoreItemDistInterval(ImLerp(cand.Min.y, cand.Max.y, 0.2f), ImLerp(cand.Min.y, cand.Max.y, 0.8f), ImLerp(curr.Min.y, curr.Max.y, 0.2f), ImLerp(curr.Min.y, curr.Max.y, 0.8f)); // Clamp down on Y to keep using box-distance for vertically touching items | |
+ | |
if (dby && dbx) |
/* =========================================================================== | |
* | |
* LIBRARY | |
* | |
* =========================================================================== */ | |
/* Proof of Concept GUI: | |
* - PoC UI implementation in ~2.5kLOC of C89 (ANSI C) | |
* => Core solutions has no external dependencies (removing standard library dependency is trival) | |
* => Does not use or require any special language constructs or macro constructs just pointers and enums | |
* - Combines both "retained" and "immediate mode" UI by providing control over update frequency |
#pragma comment(lib, "SDL2") | |
#pragma comment(lib, "SDL2main") | |
#include "SDL.h" | |
#include <vector> | |
#include <unordered_map> | |
#include <assert.h> | |
#include <algorithm> |
// ImGui BFFX binding | |
// In this binding, ImTextureID is used to store an OpenGL 'GLuint' texture identifier. Read the FAQ about ImTextureID in imgui.cpp. | |
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this. | |
// If you use this binding you'll need to call 4 functions: ImGui_ImplXXXX_Init(), ImGui_ImplXXXX_NewFrame(), ImGui::Render() and ImGui_ImplXXXX_Shutdown(). | |
// If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. | |
// https://github.com/ocornut/imgui | |
#include <imgui.h> | |
#include "imgui_impl_bgfx.h" |