载入中...
搜索中...
未找到
LocationProfile.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include "common/Result.h"
6#include "common/Value.h"
7
8#include <optional>
9#include <string>
10#include <string_view>
11#include <vector>
12
13namespace eve::scene {
14
17 float x = 0, y = 0, z = 0;
18 float qx = 0, qy = 0, qz = 0, qw = 1;
19};
20
23 std::string name;
25 std::optional<LocationPose> player;
26 std::string controller = "Not Been Set";
27 std::string scene = "Not Been Set";
28};
29
33 std::optional<LocationPose> player;
34};
35
41public:
43 [[nodiscard]] Result<void> saveLocation(const LocationPose& camera,
44 const std::optional<LocationPose>& player = std::nullopt);
46 [[nodiscard]] Result<LocationSnapshot> loadLocation();
48 bool hasSavedLocation() const noexcept { return saved_.has_value(); }
49
51 [[nodiscard]] Result<int> addBookmark(LocationBookmark bookmark);
53 [[nodiscard]] Result<void> overrideBookmark(int index, const LocationSnapshot& snapshot,
54 std::string controller, std::string scene);
56 [[nodiscard]] Result<int> removeBookmark(int index, int selectedIndex);
58 [[nodiscard]] Result<LocationSnapshot> loadBookmark(int index) const;
60 [[nodiscard]] Result<int> previousBookmark(int selectedIndex) const;
62 [[nodiscard]] Result<int> nextBookmark(int selectedIndex) const;
64 void clearBookmarks() noexcept { bookmarks_.clear(); }
66 int getBookmarkCount() const noexcept { return static_cast<int>(bookmarks_.size()); }
68 [[nodiscard]] Result<std::string> getBookmarkName(int index) const;
70 [[nodiscard]] Result<std::string> getBookmarkController(int index) const;
72 [[nodiscard]] Result<std::string> getBookmarkScene(int index) const;
74 [[nodiscard]] Result<std::string> serializeJson() const;
80 [[nodiscard]] Result<void> restoreJson(std::string_view json);
86 const LocationBookmark* bookmarkAt(int index) const noexcept;
87
88private:
89 std::optional<LocationSnapshot> saved_;
90 std::vector<LocationBookmark> bookmarks_;
91};
92
93} // namespace eve::scene
#define EVENGINE_API_PLATFORM
Definition Export.h:107
float camera[2]
std::weak_ptr< PrimitiveScene > scene
Move-only, checked operation results for the common layer.
uint32_t index
Owning, renderer-independent dynamic values.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Caller-owned Pcg location and bookmark state. Mutable operations validate complete candidate data bef...
void clearBookmarks() noexcept
Remove every bookmark.
bool hasSavedLocation() const noexcept
Whether a startup location is waiting to be consumed.
int getBookmarkCount() const noexcept
Returns the bookmark count.
One named Pcg location bookmark with optional player transform metadata.
std::optional< LocationPose > player
Provider-neutral position and quaternion stored by Pcg's location profile.
Loaded camera/player transform pair.
std::optional< LocationPose > player