载入中...
搜索中...
未找到
CameraTarget.h
浏览该文件的文档.
1#pragma once
2
7
8#include <glm/glm.hpp>
9
10#include <memory>
11#include <string>
12#include <vector>
13
14namespace eve::camera { class CameraController; }
15namespace eve::graphics { class Camera3D; }
16
17namespace eve::camera_editing {
18
29
33 std::string name;
34 std::string mode = "follow";
35 int priority = 0;
36 bool enabled = true;
37 glm::vec3 target{0.f};
38 glm::vec3 offset{0.f, 2.f, 6.f};
39 glm::vec3 lookAhead{0.f};
40 glm::vec2 composition{0.f};
41 float radius = 10.f;
42 float azimuth = 45.f;
43 float elevation = 30.f;
44 float yaw = 0.f;
45 float pitch = 0.f;
46 float fov = 60.f;
47 float smooth = 6.f;
48 float maxSpeed = 0.f;
49};
50
54 std::string kind;
55 float time = 0.f;
57 float blend = 0.f;
58 std::string property;
59 float value = 0.f;
60 std::string name;
61 std::string data;
62};
63
66 public virtual IEditableTarget,
69 public IPropertyProvider {
70public:
72 explicit CameraDocumentTarget(std::string id);
74 TargetId targetId() const override { return TargetId(id_); }
76 TargetDescriptor describe() const override;
78 void* queryCapability(const CapabilityId& capability) override;
80 Result<void> applyDomainOperation(const DomainOperation& operation) override;
82 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
84 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
86 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
88 PropertySchema schema(const SelectionSnapshot& selection) const override;
90 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
92 Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
93 const EditorValue& value, PropertySetMode mode) const override;
95 Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
96 const PropertyPath& path) const override;
98 Result<DomainOperation> makeCreateRig(const CameraRigValue& rig) const;
100 Result<DomainOperation> makeDeleteRig(const ObjectId& id) const;
102 Result<DomainOperation> makeCreateKey(const CameraTimelineKeyValue& key) const;
104 Result<DomainOperation> makeDeleteKey(const ObjectId& id) const;
106 const std::vector<CameraRigValue>& rigs() const { return rigs_; }
108 std::vector<CameraTimelineKeyValue> timeline() const;
110 std::vector<EditorDiagnostic> validate() const;
112 EditorValue snapshotValue() const;
114 Result<void> loadSnapshot(const EditorValue& snapshot);
115private:
117 bool matches(const SelectionSnapshot& selection) const;
119 EditorValue contentValue() const;
121 Result<DomainOperation> replacement(EditorValue content, std::string property = {}) const;
122 std::string id_;
123 std::vector<CameraRigValue> rigs_; std::vector<CameraTimelineKeyValue> keys_;
124};
125
127struct CameraPreviewPose { glm::vec3 eye{0.f}; glm::vec3 target{0.f}; float fov = 60.f; ObjectId rig; };
128
131public:
133 Result<CameraPreviewPose> evaluate(const CameraDocumentTarget& document, float time) const;
135 Result<EditorGizmoSnapshot> gizmo(const CameraDocumentTarget& document, float time) const;
136};
137
140public:
148 camera::CameraController* controller() const { return controller_.get(); }
150 Revision revision() const { return revision_; }
151private:
152 std::unique_ptr<camera::CameraController> controller_; Revision revision_ = 0;
153};
154
155} // namespace eve::camera_editing
ActionParameterOperation operation
double value
#define EVENGINE_API_DOMAINS
Definition Export.h:110
float camera[2]
std::uint32_t key
std::string path
Definition PlayHost.cpp:110
A structured explanation of a failed, degraded, or noteworthy result.
Definition Diagnostic.h:94
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
3D 摄像机控制器(eve.Camera / eve.CameraController)。
Candidate-first bridge from camera assets to CameraController.
~CameraDocumentRuntime()
Camera document runtime.
CameraDocumentRuntime()
Camera document runtime.
camera::CameraController * controller() const
Access the active controller generation.
Revisioned camera-rig and director-timeline editing document.
const std::vector< CameraRigValue > & rigs() const
Return authored rigs in stable document order.
TargetId targetId() const override
Target id.
Deterministic scrub evaluator and camera/frustum gizmo producer.
Dirty region and revision shared by every editable document target.
Optional candidate/publish capability for atomic domain operations.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
UI-independent property access for an immutable selection snapshot.
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
EVENGINE_API_BACKENDS public API.
editing::Revision Revision
eve::Severity DiagnosticSeverity
std::uint64_t Revision
StrongId< TargetIdTag > TargetId
Definition EditingIds.h:57
eve::Diagnostic Diagnostic
StrongId< ObjectIdTag > ObjectId
Definition EditingIds.h:65
PropertyType
PropertyType public API.
StrongId< RuleIdTag > RuleId
Definition EditingIds.h:60
PropertySetMode
PropertySetMode public API.
PropertyFlag
PropertyFlag public API.
eve::StatusCode Status
StrongId< CapabilityIdTag > CapabilityId
Definition EditingIds.h:61
Result< void > validatePropertyValue(const PropertyDescriptor &descriptor, const Value &value)
Validate property value.
PropertyReadState
PropertyReadState public API.
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
Severity
Stable severity of a diagnostic, independent of its display text.
Definition Diagnostic.h:20
Renderer-neutral camera pose sampled from an authored timeline.
Stable authored camera rig independent of a live scene camera.
Stable camera timeline key (cut, event, or scalar automation).
DomainOperation public API.
EditRegion public API.
Renderer-neutral wire primitive for authoring viewport overlays.
Immutable revision-tagged overlay snapshot consumed by any viewport renderer.
PropertyDescriptor public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.