载入中...
搜索中...
未找到
AiPanel.hpp
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4
5#include <cstdint>
6#include <deque>
7#include <mutex>
8#include <string>
9#include <vector>
10
11namespace eve::dev {
12
14 std::string timestamp; // ISO-ish local time
15 std::string kind; // tool | note | system | error
16 std::string title;
17 std::string detail;
18};
19
28public:
29 static AiPanel& instance();
30
31 AiPanel(const AiPanel&) = delete;
32 AiPanel& operator=(const AiPanel&) = delete;
33
34 void setVisible(bool on);
35 bool isVisible() const;
36 void toggleVisible();
37
38 void setMcpPort(int port);
39 int mcpPort() const;
40 void setMcpConnected(bool on);
41 bool mcpConnected() const;
42 void setClientName(std::string name);
43 std::string clientName() const;
44
45 void clearLog();
46 void addLog(std::string kind, std::string title, std::string detail = {});
47 void addNote(std::string text);
48 std::vector<AiLogEntry> recentLog(size_t max = 64) const;
49 std::string formatLog(size_t max = 64) const;
50
52 std::string statusLine() const;
53
59 void drawImGui();
60
61 using ImGuiDrawer = void (*)(AiPanel& panel);
62 static void setImGuiDrawer(ImGuiDrawer fn);
63
64 void setMaxEntries(size_t n);
65 size_t maxEntries() const { return maxEntries_; }
66
67private:
68 // Immortal<AiPanel> constructs the singleton (devtools/Immortal.hpp).
69 template <typename> friend struct Immortal;
70 AiPanel() = default;
71
72 static std::string nowStamp();
73
74 mutable std::mutex mu_;
75 bool visible_ = true;
76 int mcpPort_ = 0;
77 bool mcpConnected_ = false;
78 std::string clientName_;
79 size_t maxEntries_ = 200;
80 std::deque<AiLogEntry> log_;
81};
82
83} // namespace eve::dev
Tok kind
std::string title
#define EVENGINE_API
宿主(eve / libmain)导出宏;插件从进程导入同一批符号。
Definition Export.h:16
glm::vec3 n
Definition Grass.cpp:64
const char * name
Definition RockMesh.cpp:21
SettlementPipeline::Stage fn
In-engine AI / MCP session surface for DevTools.
Definition AiPanel.hpp:27
AiPanel(const AiPanel &)=delete
size_t maxEntries() const
Definition AiPanel.hpp:65
void(*)(AiPanel &panel) ImGuiDrawer
Definition AiPanel.hpp:61
AiPanel & operator=(const AiPanel &)=delete
std::string detail
Definition AiPanel.hpp:17
std::string timestamp
Definition AiPanel.hpp:14
std::string kind
Definition AiPanel.hpp:15
std::string title
Definition AiPanel.hpp:16
Process-immortal singleton holder for DevTools objects.
Definition Immortal.hpp:19