载入中...
搜索中...
未找到
LightingTarget.cpp
浏览该文件的文档.
9PropertyDescriptor property(const char* path, const char* label, const char* category, PropertyType type,
21void numeric(PropertySchema& schema, const char* path, const char* label, const char* category, double value,
36 schema.properties.push_back(property("light.enabled", "editor.light.enabled", "light", PropertyType::Bool, true));
37 schema.properties.push_back(property("transform.position", "editor.light.position", "transform", PropertyType::Vec3,
39 schema.properties.push_back(property("transform.direction", "editor.light.direction", "transform",
41 schema.properties.push_back(property("light.color", "editor.light.color", "light", PropertyType::Color,
56 property("volumetric.enabled", "editor.light.volumetric", "volumetric", PropertyType::Bool, false));
57 numeric(schema, "volumetric.intensity", "editor.light.volumetric-intensity", "volumetric", 1.0, 0.0, 100.0);
58 schema.properties.push_back(property("volumetric.only", "editor.light.volumetric-only", "volumetric",
66 auto mode = property("environment.mode", "editor.environment.mode", "environment", PropertyType::Enum, "static");
69 schema.properties.push_back(property("environment.sky-color", "editor.environment.sky-color", "environment",
71 schema.properties.push_back(property("environment.ambient-color", "editor.environment.ambient-color", "environment",
73 numeric(schema, "environment.exposure", "editor.environment.exposure", "environment", 1.0, 0.05, 8.0);
75 numeric(schema, "daynight.speed", "editor.environment.speed", "daynight", 1.0, 0.0, 1000.0, 0.1);
77 property("daynight.paused", "editor.environment.paused", "daynight", PropertyType::Bool, false));
78 numeric(schema, "daynight.turbidity", "editor.environment.turbidity", "daynight", 2.5, 1.5, 10.0);
83 property("weather.preset", "editor.environment.weather-preset", "weather", PropertyType::Enum, "clear");
86 numeric(schema, "weather.intensity", "editor.environment.weather-intensity", "weather", 0.0, 0.0, 1.0);
87 numeric(schema, "weather.wind-speed", "editor.environment.wind-speed", "weather", 0.0, 0.0, 200.0);
88 numeric(schema, "weather.wind-direction", "editor.environment.wind-direction", "weather", 0.0, -360.0, 360.0);
90 property("weather.lightning", "editor.environment.lightning", "weather", PropertyType::Bool, false));
91 schema.properties.push_back(property("weather.fog-color", "editor.environment.fog-color", "weather",
93 numeric(schema, "weather.fog-density", "editor.environment.fog-density", "weather", 0.0, 0.0, 10.0);
94 schema.properties.push_back(property("weather.environment-enabled", "editor.environment.weather-owned", "weather",
108LightingPropertyTargetBase::LightingPropertyTargetBase(std::string id, std::string targetType, PropertySchema schema)
124 return capability == CapabilityId("eve.editor.target.lighting-properties") ? static_cast<IPropertyProvider*>(this)
128Result<void> LightingPropertyTargetBase::applyDomainOperation(const DomainOperation& operation) {
130 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.lighting.target-mismatch"),
133 return eve::editing::failed<void>(EditorStatus::Unsupported, RuleId("editor.lighting.operation-unsupported"),
140 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.lighting.invalid-operation"),
150eve::Result<eve::Revision> LightingPropertyTargetBase::currentRevision(const SelectionSnapshot& selection) const {
158PropertySchema LightingPropertyTargetBase::schema(const SelectionSnapshot&) const { return schema_; }
172 return eve::editing::failed<DomainOperation>(EditorStatus::Rejected, RuleId("editor.lighting.selection"),
176 return eve::editing::failed<DomainOperation>(EditorStatus::Unsupported, RuleId("editor.lighting.set-mode"),
199Result<DomainOperation> LightingPropertyTargetBase::makeReset(const SelectionSnapshot& selection,
212 return EditorValue::Object{{"schemaVersion", int64_t{1}}, {"properties", std::move(properties)}};
219 const auto* properties = propertiesValue ? propertiesValue->getIf<EditorValue::Object>() : nullptr;
221 return eve::editing::failed<void>(EditorStatus::Rejected, RuleId("editor.lighting.invalid-snapshot"),
229 return eve::editing::failed<void>(EditorStatus::Unsupported, RuleId("editor.lighting.snapshot-property"),
268 RuleId("editor.light.zero-direction"), DiagnosticSeverity::Error, "Light direction cannot be zero"));
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
UUID-backed identifier adapter for legacy textual boundaries.
Definition Identity.h:314
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
virtual void clearDirtyRegion()=0
Clears dirty region.
UI-independent property access for an immutable selection snapshot.
Definition EditingProperty.h:139
PropertyDescriptorLookup public API.
Definition EditingProperty.h:91
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
EnvironmentDocumentTarget(std::string id)
Environment document target.
Definition LightingTarget.cpp:292
std::vector< EditorDiagnostic > validate() const
Validate mode-dependent atmosphere and weather settings.
Definition LightingTarget.cpp:295
std::vector< EditorDiagnostic > validate() const
Validate direction, shadow and point/directional cross-field rules.
Definition LightingTarget.cpp:253
Shared property-document implementation for light and environment targets.
Definition LightingTarget.h:56
PropertySchema schema(const SelectionSnapshot &selection) const override
Schema.
Definition LightingTarget.cpp:158
const EditorValue * value(const std::string &path) const
Read a typed runtime-neutral property value by path.
Definition LightingTarget.cpp:241
EditorValue snapshotValue() const
Capture deterministic values for document persistence.
Definition LightingTarget.cpp:209
Result< void > applyDomainOperation(const DomainOperation &operation) override
Applies domain operation.
Definition LightingTarget.cpp:128
void * queryCapability(const CapabilityId &capability) override
Query an optional target capability.
Definition LightingTarget.cpp:123
PropertyReadResult read(const SelectionSnapshot &selection, const PropertyPath &path) const override
Reads .
Definition LightingTarget.cpp:160
LightingPropertyTargetBase(std::string id, std::string targetType, PropertySchema schema)
Construct a concrete property target from its schema and defaults.
Definition LightingTarget.cpp:108
Result< void > loadSnapshot(const EditorValue &snapshot)
Atomically load a schema-version-one property snapshot.
Definition LightingTarget.cpp:215
Result< DomainOperation > makeSet(const SelectionSnapshot &selection, const PropertyPath &path, const EditorValue &value, PropertySetMode mode) const override
Make set.
Definition LightingTarget.cpp:168
Result< DomainOperation > makeReset(const SelectionSnapshot &selection, const PropertyPath &path) const override
Make reset.
Definition LightingTarget.cpp:199
eve::Result< eve::Revision > currentRevision(const SelectionSnapshot &selection) const override
Current revision.
Definition LightingTarget.cpp:150
Diagnostic ruleDiagnostic(eve::DiagnosticCode code, RuleId rule, DiagnosticSeverity severity, std::string message)
Build a common diagnostic carrying an open editing rule identity.
Definition EditingResult.h:25
editing::PropertySchema PropertySchema
Definition LightingTarget.h:42
editing::PropertyDescriptor PropertyDescriptor
Definition LightingTarget.h:36
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
@ PreconditionViolation
@ Unsupported
@ Conflict
Definition Container.h:602
std::vector< PropertyDescriptor > properties
Definition EditingProperty.h:120
PropertyDescriptorLookup find(const PropertyPath &path) const
Finds find.
Definition EditingProperty.cpp:9
std::vector< SelectionItem > items
Definition EditingSelection.h:22
Stable discovery metadata exposed by every editable target.
Definition EditableTarget.h:39
std::vector< CapabilityId > capabilities
Definition EditableTarget.h:44