mirror of
https://github.com/k4zmu2a/SpaceCadetPinball.git
synced 2024-12-18 10:37:53 +01:00
Added debug overlay for ball sprite size cutoff points.
This commit is contained in:
parent
4ec30cf472
commit
cfaab257ed
6 changed files with 35 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "DebugOverlay.h"
|
#include "DebugOverlay.h"
|
||||||
|
|
||||||
|
#include "loader.h"
|
||||||
#include "maths.h"
|
#include "maths.h"
|
||||||
#include "proj.h"
|
#include "proj.h"
|
||||||
#include "winmain.h"
|
#include "winmain.h"
|
||||||
|
@ -118,6 +119,10 @@ void DebugOverlay::DrawOverlay()
|
||||||
if (options::Options.DebugOverlaySounds)
|
if (options::Options.DebugOverlaySounds)
|
||||||
DrawSoundPositions();
|
DrawSoundPositions();
|
||||||
|
|
||||||
|
// Draw ball depth cutoff steps that determine sprite size.
|
||||||
|
if (options::Options.DebugOverlayBallDepthGrid)
|
||||||
|
DrawBallDepthSteps();
|
||||||
|
|
||||||
// Restore render target
|
// Restore render target
|
||||||
SDL_SetRenderTarget(winmain::Renderer, initialRenderTarget);
|
SDL_SetRenderTarget(winmain::Renderer, initialRenderTarget);
|
||||||
SDL_SetRenderDrawColor(winmain::Renderer,
|
SDL_SetRenderDrawColor(winmain::Renderer,
|
||||||
|
@ -243,6 +248,29 @@ void DebugOverlay::DrawSoundPositions()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebugOverlay::DrawBallDepthSteps()
|
||||||
|
{
|
||||||
|
auto& edgeMan = *TTableLayer::edge_manager;
|
||||||
|
SDL_SetRenderDrawColor(winmain::Renderer, 200, 100, 0, 255);
|
||||||
|
|
||||||
|
for (auto ball : pb::MainTable->BallList)
|
||||||
|
{
|
||||||
|
auto visualCount = loader::query_visual_states(ball->GroupIndex);
|
||||||
|
for (auto index = 0; index < visualCount; ++index)
|
||||||
|
{
|
||||||
|
auto depthPt = reinterpret_cast<vector3*>(loader::query_float_attribute(ball->GroupIndex, index, 501));
|
||||||
|
auto pt = proj::xform_to_2d(*depthPt);
|
||||||
|
|
||||||
|
// Snap X coordinate to edge box sides
|
||||||
|
auto x1 = proj::xform_to_2d(vector2{edgeMan.MinX, depthPt->Y}).X;
|
||||||
|
auto x2 = proj::xform_to_2d(vector2{edgeMan.MaxBoxX * edgeMan.AdvanceX + edgeMan.MinX, depthPt->Y}).X;
|
||||||
|
auto ff = proj::xform_to_2d(vector2{ edgeMan.MaxBoxX * edgeMan.AdvanceX + edgeMan.MinX, depthPt->Y });
|
||||||
|
SDL_RenderDrawLine(winmain::Renderer, x1, pt.Y, x2, pt.Y);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DebugOverlay::DrawCicleType(circle_type& circle)
|
void DebugOverlay::DrawCicleType(circle_type& circle)
|
||||||
{
|
{
|
||||||
vector2 linePt{ circle.Center.X + sqrt(circle.RadiusSq), circle.Center.Y };
|
vector2 linePt{ circle.Center.X + sqrt(circle.RadiusSq), circle.Center.Y };
|
||||||
|
|
|
@ -21,4 +21,5 @@ private:
|
||||||
static void DrawBallInfo();
|
static void DrawBallInfo();
|
||||||
static void DrawAllSprites();
|
static void DrawAllSprites();
|
||||||
static void DrawSoundPositions();
|
static void DrawSoundPositions();
|
||||||
|
static void DrawBallDepthSteps();
|
||||||
};
|
};
|
|
@ -54,6 +54,7 @@ TBall::TBall(TPinballTable* table) : TPinballComponent(table, -1, false)
|
||||||
RenderSprite = new render_sprite(VisualTypes::Ball, nullptr, nullptr, 0, 0, nullptr);
|
RenderSprite = new render_sprite(VisualTypes::Ball, nullptr, nullptr, 0, 0, nullptr);
|
||||||
PinballTable->CollisionCompOffset = Offset;
|
PinballTable->CollisionCompOffset = Offset;
|
||||||
Position.Z = Offset;
|
Position.Z = Offset;
|
||||||
|
GroupIndex = groupIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TBall::Repaint()
|
void TBall::Repaint()
|
||||||
|
|
|
@ -117,6 +117,7 @@ void options::InitPrimary()
|
||||||
Options.DebugOverlaySounds = get_int("Debug Overlay Sounds", true);
|
Options.DebugOverlaySounds = get_int("Debug Overlay Sounds", true);
|
||||||
translations::SetCurrentLanguage(get_string("Language", translations::GetCurrentLanguage()->ShortName).c_str());
|
translations::SetCurrentLanguage(get_string("Language", translations::GetCurrentLanguage()->ShortName).c_str());
|
||||||
Options.FontFileName = get_string("FontFileName", "");
|
Options.FontFileName = get_string("FontFileName", "");
|
||||||
|
Options.DebugOverlayBallDepthGrid = get_int("Debug Overlay Ball Depth Grid", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void options::InitSecondary()
|
void options::InitSecondary()
|
||||||
|
@ -167,6 +168,7 @@ void options::uninit()
|
||||||
set_int("Debug Overlay Sounds", Options.DebugOverlaySounds);
|
set_int("Debug Overlay Sounds", Options.DebugOverlaySounds);
|
||||||
set_string("Language", translations::GetCurrentLanguage()->ShortName);
|
set_string("Language", translations::GetCurrentLanguage()->ShortName);
|
||||||
set_string("FontFileName", Options.FontFileName.c_str());
|
set_string("FontFileName", Options.FontFileName.c_str());
|
||||||
|
set_int("Debug Overlay Ball Depth Grid", Options.DebugOverlayBallDepthGrid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,7 @@ struct optionsStruct
|
||||||
bool DebugOverlayCollisionMask;
|
bool DebugOverlayCollisionMask;
|
||||||
bool DebugOverlaySprites;
|
bool DebugOverlaySprites;
|
||||||
bool DebugOverlaySounds;
|
bool DebugOverlaySounds;
|
||||||
|
bool DebugOverlayBallDepthGrid;
|
||||||
std::string FontFileName;
|
std::string FontFileName;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -657,6 +657,8 @@ void winmain::RenderUi()
|
||||||
{
|
{
|
||||||
if (ImGui::MenuItem("Box Grid", nullptr, Options.DebugOverlayGrid))
|
if (ImGui::MenuItem("Box Grid", nullptr, Options.DebugOverlayGrid))
|
||||||
Options.DebugOverlayGrid ^= true;
|
Options.DebugOverlayGrid ^= true;
|
||||||
|
if (ImGui::MenuItem("Ball Depth Grid", nullptr, Options.DebugOverlayBallDepthGrid))
|
||||||
|
Options.DebugOverlayBallDepthGrid ^= true;
|
||||||
if (ImGui::MenuItem("Sprite Positions", nullptr, Options.DebugOverlaySprites))
|
if (ImGui::MenuItem("Sprite Positions", nullptr, Options.DebugOverlaySprites))
|
||||||
Options.DebugOverlaySprites ^= true;
|
Options.DebugOverlaySprites ^= true;
|
||||||
if (ImGui::MenuItem("All Edges", nullptr, Options.DebugOverlayAllEdges))
|
if (ImGui::MenuItem("All Edges", nullptr, Options.DebugOverlayAllEdges))
|
||||||
|
|
Loading…
Reference in a new issue