From a172969655b53edda449cb1b42ac310a78d314b6 Mon Sep 17 00:00:00 2001 From: David Markowitz Date: Tue, 30 Sep 2025 23:58:30 -0700 Subject: [PATCH] feat: script debug info --- dGame/dComponents/ScriptComponent.cpp | 25 ++++++++++++++++++++----- dGame/dComponents/ScriptComponent.h | 7 +++++-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/dGame/dComponents/ScriptComponent.cpp b/dGame/dComponents/ScriptComponent.cpp index d6bff5b5..b3be186e 100644 --- a/dGame/dComponents/ScriptComponent.cpp +++ b/dGame/dComponents/ScriptComponent.cpp @@ -5,16 +5,18 @@ #include "Entity.h" #include "ScriptComponent.h" +#include "GameMessages.h" +#include "Amf3.h" + +ScriptComponent::ScriptComponent(Entity* parent, const std::string& scriptName, bool serialized, bool client) : Component(parent) { + using namespace GameMessages; -ScriptComponent::ScriptComponent(Entity* parent, std::string scriptName, bool serialized, bool client) : Component(parent) { m_Serialized = serialized; m_Client = client; + m_ScriptName = scriptName; SetScript(scriptName); -} - -ScriptComponent::~ScriptComponent() { - + RegisterMsg(this, &ScriptComponent::OnGetObjectReportInfo); } void ScriptComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) { @@ -50,3 +52,16 @@ void ScriptComponent::SetScript(const std::string& scriptName) { // and they may also be used by other script components so DON'T delete them. m_Script = CppScripts::GetScript(m_Parent, scriptName); } + +bool ScriptComponent::OnGetObjectReportInfo(GameMessages::GameMsg& msg) { + auto& infoMsg = static_cast(msg); + + auto& scriptInfo = infoMsg.info->PushDebug("Script"); + scriptInfo.PushDebug("Script Name") = m_ScriptName.empty() ? "None" : m_ScriptName; + auto& networkSettings = scriptInfo.PushDebug("Network Settings"); + for (const auto* const setting : m_Parent->GetNetworkSettings()) { + networkSettings.PushDebug(GeneralUtils::UTF16ToWTF8(setting->GetKey())) = setting->GetValueAsString(); + } + + return true; +} diff --git a/dGame/dComponents/ScriptComponent.h b/dGame/dComponents/ScriptComponent.h index adc7cc8b..e73f7ef1 100644 --- a/dGame/dComponents/ScriptComponent.h +++ b/dGame/dComponents/ScriptComponent.h @@ -21,8 +21,7 @@ class ScriptComponent final : public Component { public: static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::SCRIPT; - ScriptComponent(Entity* parent, std::string scriptName, bool serialized, bool client = false); - ~ScriptComponent() override; + ScriptComponent(Entity* parent, const std::string& scriptName, bool serialized, bool client = false); void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override; @@ -43,6 +42,8 @@ public: * @param scriptName the name of the script to find */ void SetScript(const std::string& scriptName); + + bool OnGetObjectReportInfo(GameMessages::GameMsg& msg); private: @@ -60,6 +61,8 @@ private: * Whether or not this script is a client script */ bool m_Client; + + std::string m_ScriptName; }; #endif // SCRIPTCOMPONENT_H