From 10d7cffdbc57f32c570c404e2e3c31a848d422ea Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 28 Sep 2023 16:43:52 -0700 Subject: [PATCH] nine-patch cleanup --- .efrocachemap | 40 +++++++++---------- .idea/dictionaries/ericf.xml | 1 + CHANGELOG.md | 2 +- .../.idea/dictionaries/ericf.xml | 1 + src/assets/ba_data/python/baenv.py | 2 +- .../base/graphics/mesh/nine_patch_mesh.cc | 10 +++++ src/ballistica/base/ui/dev_console.cc | 33 +++++++++++++-- src/ballistica/shared/ballistica.cc | 2 +- 8 files changed, 65 insertions(+), 26 deletions(-) diff --git a/.efrocachemap b/.efrocachemap index c2891745..6f8b2907 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4056,26 +4056,26 @@ "build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1", "build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae", "build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "a5196028d865c1da423e3b44f322f0b4", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "0eb477fffc094aa13e5c89176cc0f588", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "2a83c1baf22d8bf356fcc27f1471f957", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "8c102382876ec9b3bf5157c2e692eb83", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "fb64489102c92ecfe2824c3044987f8a", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "4e4a1a0187bfaf6133a59d245b2d1bbc", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "fd2476f5995fd19dd50ef49e84cb797b", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "c6d32394a7420aa0d8a32c72df24de17", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "4e1302cc8907bd2814df01cd61fc03ad", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "bde2ee121f12001e5b1d0e8a727dd4df", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "e956c21f24bbf0291b1d0eef980a0f71", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "6bc7ba87119a7ba3d4a21ceda731311e", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "0f7e7ec2068443eb3cba3bd87d98b700", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "43fe6217db63f5e1f471ec3bc926589f", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "25da26e2ebc227d61da7261dff3b22da", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "383df77c017fa93d9abeb60fe6ecc7d3", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "1059e2cd37f10fe93fd85c06e7679cef", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "6bf2fd565a36d8da031138ae2a593c8e", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "84363c68b54f2a38b91173600580a1f3", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "44cfae2645b1b865d4965e859ee1d7b6", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "14a18765b7529e8b6b058cd77d0b4ade", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "6f1529a7790ce8ff78d4b71bc84f3648", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "526f17655b962021203216998a40bcbd", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "22701fe45842b997976cbd4b3821ffa5", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "3034dd7aa313de36df654cb0c79dbd33", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "55b238be26c5b46d0f13430115333ccc", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "0ff81b8d0e3fa31e775810ec3d768919", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "efc060ac9743f558f5e9837b64344aa5", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "87223fb839291bb08ddbae1742664c63", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "454c54966d94d08edaa1badfa76f9e3c", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "6435e6d5c70c0ef8c5d8f63c1ae78784", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "eb43b896789e743c08236f54718cb480", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "3e5183716494f74b52ed04d5f6f884a7", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "54d04f03df2a8b9758f90a2ec65c8fdf", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "7b5669f6a81b23a95a58e9b67c4ac084", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "6b9a09770c7feec38f1c3c0113024486", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "550b0876abbe2f7b1a9b0594377384f0", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "10faf4fa80588b02c249d54f7d86ed52", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "83b05eaaa4cbbee79390336f582218e1", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "53267765dc8dbd607291b85f677d9219", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "f3d305e647a7f77dd70a48f615cfd750", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "931ce8eab9859d20ad86c47d196ba62c", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "f3d305e647a7f77dd70a48f615cfd750", diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml index 56878ffb..d90743d6 100644 --- a/.idea/dictionaries/ericf.xml +++ b/.idea/dictionaries/ericf.xml @@ -1656,6 +1656,7 @@ listobj listvalidconfigs lival + llow llzma lmap lmerged diff --git a/CHANGELOG.md b/CHANGELOG.md index 941fbe32..ea16d875 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.28 (build 21395, api 8, 2023-09-28) +### 1.7.28 (build 21396, api 8, 2023-09-28) - Massively cleaned up code related to rendering and window systems (OpenGL, SDL, etc). This code had been growing into a nasty tangle for 15 years diff --git a/ballisticakit-cmake/.idea/dictionaries/ericf.xml b/ballisticakit-cmake/.idea/dictionaries/ericf.xml index 661c382f..a90597dd 100644 --- a/ballisticakit-cmake/.idea/dictionaries/ericf.xml +++ b/ballisticakit-cmake/.idea/dictionaries/ericf.xml @@ -978,6 +978,7 @@ linkstoryboards listobj llock + llow lmap localmodlibs localns diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 128aa866..b71f6394 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -52,7 +52,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21395 +TARGET_BALLISTICA_BUILD = 21396 TARGET_BALLISTICA_VERSION = '1.7.28' diff --git a/src/ballistica/base/graphics/mesh/nine_patch_mesh.cc b/src/ballistica/base/graphics/mesh/nine_patch_mesh.cc index e2a376ff..58519bca 100644 --- a/src/ballistica/base/graphics/mesh/nine_patch_mesh.cc +++ b/src/ballistica/base/graphics/mesh/nine_patch_mesh.cc @@ -2,12 +2,22 @@ #include "ballistica/base/graphics/mesh/nine_patch_mesh.h" +#include "ballistica/shared/foundation/macros.h" + namespace ballistica::base { NinePatchMesh::NinePatchMesh(float x, float y, float z, float width, float height, float border_left, float border_bottom, float border_right, float border_top) { + if (g_buildconfig.debug_build()) { + if ((border_bottom < 0.0f || border_top < 0.0f + || (border_bottom + border_top) > 1.0f) + || (border_left < 0.0f || border_right < 0.0f + || (border_left + border_right) > 1.0f)) { + BA_LOG_ONCE(LogLevel::kWarning, "Invalid nine-patch values provided."); + } + } // Statically allocate enough for a full 9 patches even though we may // not use them all (in cases of size 0 borders). VertexSimpleFull verts[16]; // 4 vertical * 4 horizontal slices. diff --git a/src/ballistica/base/ui/dev_console.cc b/src/ballistica/base/ui/dev_console.cc index cfea2af7..1e3f98f9 100644 --- a/src/ballistica/base/ui/dev_console.cc +++ b/src/ballistica/base/ui/dev_console.cc @@ -22,12 +22,27 @@ namespace ballistica::base { +// Calc border values for a nine-patch based on dimensions and a desired max +// corner radius. +static auto CalcBorder_(float corner_radius, float matching_dimension, + float other_dimension) -> float { + // Limit the radius to no more than half the shortest side. + corner_radius = std::min( + corner_radius, std::min(matching_dimension, other_dimension) * 0.5f); + if (corner_radius < 0.0001f) { + return 0.0f; + } + return corner_radius / matching_dimension; +} + // How much of the screen the console covers when it is at full size. const float kDevConsoleSize = 0.9f; const int kDevConsoleLineLimit = 80; const int kDevConsoleStringBreakUpSize = 1950; const int kDevConsoleActivateKey1 = SDLK_BACKQUOTE; const int kDevConsoleActivateKey2 = SDLK_F2; +const float kDevConsoleButtonCornerRadius{8.0f}; +const float kDevConsoleTabButtonCornerRadius{16.0f}; const double kTransitionSeconds = 0.1; @@ -109,7 +124,11 @@ class DevConsole::Button_ : public DevConsole::Widget_ { height{height}, call{NewLambdaRunnable(lambda)}, text_scale{text_scale}, - mesh(0.0f, 0.0f, 0.0f, width, height, 0.1f, 0.3f, 0.1f, 0.3f) { + mesh(0.0f, 0.0f, 0.0f, width, height, + CalcBorder_(kDevConsoleButtonCornerRadius, width, height), + CalcBorder_(kDevConsoleButtonCornerRadius, height, width), + CalcBorder_(kDevConsoleButtonCornerRadius, width, height), + CalcBorder_(kDevConsoleButtonCornerRadius, height, width)) { text_group.SetText(label, TextMesh::HAlign::kCenter, TextMesh::VAlign::kCenter); } @@ -174,7 +193,11 @@ class DevConsole::ToggleButton_ : public DevConsole::Widget_ { on_call{NewLambdaRunnable(on_call)}, off_call{NewLambdaRunnable(off_call)}, text_scale{text_scale}, - mesh(0.0f, 0.0f, 0.0f, width, height, 0.1f, 0.3f, 0.1f, 0.3f) { + mesh(0.0f, 0.0f, 0.0f, width, height, + CalcBorder_(kDevConsoleButtonCornerRadius, width, height), + CalcBorder_(kDevConsoleButtonCornerRadius, height, width), + CalcBorder_(kDevConsoleButtonCornerRadius, width, height), + CalcBorder_(kDevConsoleButtonCornerRadius, height, width)) { text_group.SetText(label, TextMesh::HAlign::kCenter, TextMesh::VAlign::kCenter); } @@ -243,7 +266,11 @@ class DevConsole::TabButton_ : public DevConsole::Widget_ { height{height}, call{NewLambdaRunnable(call)}, text_scale{text_scale}, - mesh(0.0f, 0.0f, 0.0f, width, height, 0.1f, 0.3f, 0.1f, 0.0f) { + mesh(0.0f, 0.0f, 0.0f, width, height, + CalcBorder_(kDevConsoleTabButtonCornerRadius, width, height), + CalcBorder_(kDevConsoleTabButtonCornerRadius, height, width), + CalcBorder_(kDevConsoleTabButtonCornerRadius, width, height), + 0.0f) { text_group.SetText(label, TextMesh::HAlign::kCenter, TextMesh::VAlign::kCenter); } diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 7d919d59..0baa0665 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 21395; +const int kEngineBuildNumber = 21396; const char* kEngineVersion = "1.7.28"; const int kEngineApiVersion = 8;