载入中...
搜索中...
未找到
SceneEditorSession.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
7
8#include <memory>
9#include <string>
10#include <vector>
11
12namespace eve::scene_editing {
13class SceneTargetBase;
14}
15
16namespace eve::scene_editor {
25public:
27 explicit SceneEditorSession(std::string targetId);
29 explicit SceneEditorSession(std::unique_ptr<scene_editing::SceneTargetBase> target);
35 [[nodiscard]] editing::Result<editing::TransactionReceipt> execute(std::string command, editing::Value payload);
37 [[nodiscard]] editing::Result<void> restrictCommands(const std::vector<std::string>& commands);
43 [[nodiscard]] editing::Value snapshot() const;
45 [[nodiscard]] std::string saveJson() const;
47 [[nodiscard]] editing::Result<editing::TransactionReceipt> restoreJson(const std::string& json);
49 [[nodiscard]] editing::Revision revision() const;
60 [[nodiscard]] editing::Result<void> cachePhysicsPlacementHull(const editing::ObjectId& object,
61 std::vector<float> vertices, int maxVertices = 64);
70 [[nodiscard]] editing::Result<void> cachePhysicsPlacementCompound(const editing::ObjectId& object,
71 std::string resourceKey,
72 std::vector<PhysicsPlacementCollider> colliders);
74 [[nodiscard]] editing::Result<void> removePhysicsPlacementHull(const editing::ObjectId& object);
76 [[nodiscard]] std::string savePhysicsPlacementColliderCacheJson() const;
78 [[nodiscard]] editing::Result<void> restorePhysicsPlacementColliderCacheJson(const std::string& json);
80 [[nodiscard]] editing::Result<void> beginPhysicsPlacement(PhysicsPlacementRequest request);
82 [[nodiscard]] editing::Result<PhysicsPlacementFrame> updatePhysicsPlacement(double x, double y, double z,
83 double fixedDelta = 1.0 / 60.0);
85 [[nodiscard]] editing::Result<PhysicsPlacementFrame> updatePhysicsPlacementPose(double x, double y, double z,
86 double rotationX, double rotationY,
87 double rotationZ,
88 double fixedDelta = 1.0 / 60.0);
90 [[nodiscard]] editing::Result<PhysicsPlacementFrame> updatePhysicsPlacementTransform(
91 double x, double y, double z, double rotationX, double rotationY, double rotationZ, double scaleX,
92 double scaleY, double scaleZ, double fixedDelta = 1.0 / 60.0);
94 [[nodiscard]] editing::Result<PhysicsPlacementFrame> alignPhysicsPlacementToSurface(double fromX, double fromY,
95 double fromZ, double toX,
96 double toY, double toZ,
97 double offset = 0.0,
98 double fixedDelta = 1.0 / 60.0);
100 [[nodiscard]] editing::Result<editing::TransactionReceipt> commitPhysicsPlacement();
102 [[nodiscard]] editing::Result<void> cancelPhysicsPlacement();
104 [[nodiscard]] bool physicsPlacementActive() const noexcept;
105
106private:
107 struct Impl;
108 std::unique_ptr<Impl> impl_;
109};
110} // namespace eve::scene_editor
LogicalId target
Value::Object payload
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
float z
Definition AnimClip.cpp:738
#define EVENGINE_API_EDITORS
Definition Export.h:112
const GltfImportRequest & request
size_t offset
std::uint64_t revision
std::vector< Point > vertices
std::uint32_t targetId
std::vector< VegetationPresetCommand > commands
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
Deterministic owning value tree shared by authoring hosts.
Composable scene command/history host with no UI or renderer dependency. Owns its target,...
SceneEditorSession & operator=(const SceneEditorSession &)=delete
SceneEditorSession(const SceneEditorSession &)=delete
~SceneEditorSession()
Scene editor session.
std::uint64_t Revision
scene_editing::SceneTargetBase SceneTargetBase
Owning request used to construct one isolated placement candidate.