载入中...
搜索中...
未找到
PhysicsTarget.cpp
浏览该文件的文档.
15PropertyDescriptor property(const char* path, const char* label, const char* category, PropertyType type,
41 return capability == CapabilityId("eve.editor.target.physics-collider") ? static_cast<IPropertyProvider*>(this)
47 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.physics.target-mismatch"),
50 return eve::editing::failed<void>(EditorStatus::Unsupported, RuleId("editor.physics.operation-unsupported"),
56 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.physics.operation-payload"),
74Result<void> PhysicsColliderTarget::commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) {
83eve::Result<eve::Revision> PhysicsColliderTarget::currentRevision(const SelectionSnapshot& selection) const {
86 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "Selection does not belong to this collider",
91PropertySchema PhysicsColliderTarget::schema(const SelectionSnapshot&) const { return colliderSchema(); }
93PropertyReadResult PhysicsColliderTarget::read(const SelectionSnapshot& selection, const PropertyPath& path) const {
104 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.physics.selection"),
148 auto body = property("body.type", "editor.physics.body-type", "body", PropertyType::Enum, "static");
153 shape.enumItems = dimensions_ == 2 ? std::vector<std::string>{"box", "circle", "polygon", "chain"}
159 path, label, "shape", dimensions_ == 2 ? PropertyType::Vec2 : PropertyType::Vec3, std::move(value)));
163 dimensions_ == 2 ? EditorValue(EditorValue::Array{0.0, 0.0}) : EditorValue(EditorValue::Array{0.0, 0.0, 0.0}));
166 dimensions_ == 2 ? EditorValue(EditorValue::Array{1.0, 1.0}) : EditorValue(EditorValue::Array{1.0, 1.0, 1.0}));
167 auto numeric = [&](const char* path, const char* label, const char* category, double value, double minimum,
190 auto asset = property("shape.asset", "editor.physics.shape-asset", "shape", PropertyType::AssetRef, "");
207 if (descriptor.path == PropertyPath("shape.size") || descriptor.path == PropertyPath("shape.offset")) {
216 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.physics.vector-value"),
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
const std::string & value() const noexcept
Returns the exact legacy or canonical compatibility spelling.
Definition Identity.h:362
void bumpRevision()
Advance the revision without touching the dirty region.
Definition EditableTarget.h:179
Revision revisionValue() const noexcept
Return the revision as the shared protocol revision type.
Definition EditableTarget.h:169
void widenDirty()
Mark an unknown area dirty without advancing the revision.
Definition EditableTarget.h:177
eve::OptionalRef< C > capability()
Query a capability through its interface-owned stable identity.
Definition EditableTarget.h:82
UI-independent property access for an immutable selection snapshot.
Definition EditingProperty.h:139
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
Definition EditingValue.h:19
Serializable, backend-neutral 2D/3D collider authoring target.
Definition PhysicsTarget.h:52
PropertySchema schema(const SelectionSnapshot &selection) const override
Schema.
Definition PhysicsTarget.cpp:91
PropertyReadResult read(const SelectionSnapshot &selection, const PropertyPath &path) const override
Reads .
Definition PhysicsTarget.cpp:93
Result< void > commitDomainState(std::unique_ptr< IDomainOperationTarget > candidate) override
Commits domain state.
Definition PhysicsTarget.cpp:74
Result< DomainOperation > makeReset(const SelectionSnapshot &selection, const PropertyPath &path) const override
Make reset.
Definition PhysicsTarget.cpp:135
eve::Result< eve::Revision > currentRevision(const SelectionSnapshot &selection) const override
Current revision.
Definition PhysicsTarget.cpp:83
Result< DomainOperation > makeSet(const SelectionSnapshot &selection, const PropertyPath &path, const EditorValue &value, PropertySetMode mode) const override
Make set.
Definition PhysicsTarget.cpp:100
std::unique_ptr< IDomainOperationTarget > cloneDomainState() const override
Clones domain state.
Definition PhysicsTarget.cpp:70
void * queryCapability(const CapabilityId &capability) override
Query an optional target capability.
Definition PhysicsTarget.cpp:40
PhysicsColliderTarget(std::string id, int dimensions=3)
Physics collider target.
Definition PhysicsTarget.cpp:29
Result< void > applyDomainOperation(const DomainOperation &operation) override
Applies domain operation.
Definition PhysicsTarget.cpp:45
editing::PropertyDescriptor PropertyDescriptor
Definition ArchSpaceTarget.h:31
editing::PropertyPath PropertyPath
Definition ArchSpaceTarget.h:33
Result< void > validatePropertyValue(const PropertyDescriptor &descriptor, const Value &value)
Validate property value.
Definition EditingProperty.cpp:138
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
enum EVENGINE_API_FOUNDATION Array
OT_ARRAY (editable via Runtime array APIs / ReflectedPropertyModel).
Definition Runtime.h:120
Definition Container.h:602
std::vector< PropertyDescriptor > properties
Definition EditingProperty.h:120
PropertyDescriptorLookup find(const PropertyPath &path) const
Finds find.
Definition EditingProperty.cpp:9
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39