载入中...
搜索中...
未找到
EditorSelection.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6#include "editor/EditorIds.h"
8
9#include <cstdint>
10#include <functional>
11#include <map>
12#include <optional>
13#include <string>
14#include <vector>
15
16namespace eve::editor {
17
20
23
26
29
32public:
33 using Listener = std::function<void(const SelectionSnapshot&)>;
34
36 Result<SelectionSnapshot> set(std::string channel, std::vector<SelectionItem> items,
37 std::optional<SelectionItem> primary = std::nullopt);
39 Result<SelectionSnapshot> clear(const std::string& channel);
41 SelectionSnapshot snapshot(const std::string& channel) const;
43 Result<void> subscribe(std::string owner, Listener listener);
45 bool unsubscribe(const std::string& owner);
46
47private:
48 std::map<std::string, SelectionSnapshot> selections_;
49 std::map<std::string, Listener> listeners_;
50 std::uint64_t sequence_ = 0;
51};
52
55public:
57 Result<EditorFocusSnapshot> focus(std::string channel, StableId surface, StableId item = {});
59 EditorFocusSnapshot snapshot(const std::string& channel) const;
60
61private:
62 std::map<std::string, EditorFocusSnapshot> focus_;
63 std::uint64_t sequence_ = 0;
64};
65
66} // namespace eve::editor
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
Move-only operation result carrying either a value or Status.
Definition Result.h:155
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
Shared semantic focus service for docked editor and game HUD surfaces.
Channelled selection/focus state shared by editor and in-game presentations.
std::function< void(const SelectionSnapshot &)> Listener
SelectionDomain
SelectionDomain public API.
FocusSnapshot public API.
SelectionItem public API.
SelectionSnapshot public API.