载入中...
搜索中...
未找到
BiomeTarget.h
浏览该文件的文档.
1#pragma once
2
3#include <memory>
4#include <string>
5#include <vector>
6#include "common/Export.h"
10
11namespace eve::procgen {
12class SpatialData;
13class BiomeRules;
14class PointSet;
15} // namespace eve::procgen
16namespace eve::biome_editing {
22using editing::Result;
struct BiomeAssetValue {
47 std::string asset;
48 float weight = 1, minScale = 1, maxScale = 1;
49 bool randomYaw = true;
50};
struct BiomeLayerValue {
53 std::string name, spatialAsset;
54 int priority = 0;
55 float density = 1;
56 std::vector<BiomeAssetValue> assets;
57};
60 public virtual IEditableTarget,
63 public IPropertyProvider,
65public:
67 explicit BiomeDocumentTarget(std::string id);
71 return CapabilityId("eve.editor.target.biome-properties");
72 }
74 TargetId targetId() const override { return TargetId(id_); }
76 TargetDescriptor describe() const override;
83 void* queryCapability(const CapabilityId&) override;
85 Result<void> applyDomainOperation(const DomainOperation&) override;
87 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
89 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget>) override;
91 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot&) const override;
93 PropertySchema schema(const SelectionSnapshot&) const override;
95 PropertyReadResult read(const SelectionSnapshot&, const PropertyPath&) const override;
98 PropertySetMode) const override;
100 Result<DomainOperation> makeReset(const SelectionSnapshot&, const PropertyPath&) const override;
102 Result<DomainOperation> makeCreateLayer(const BiomeLayerValue&) const;
104 Result<DomainOperation> makeDeleteLayer(const ObjectId&) const;
106 Result<DomainOperation> makeCreateAsset(const ObjectId& layer, const BiomeAssetValue&) const;
108 Result<DomainOperation> makeDeleteAsset(const ObjectId&) const;
110 Result<DomainOperation> makeSetExclusions(std::vector<std::string>) const;
112 const std::vector<BiomeLayerValue>& layers() const { return layers_; }
114 const std::vector<std::string>& exclusions() const { return exclusions_; }
116 std::vector<EditorDiagnostic> validate() const;
118 EditorValue snapshotValue() const override;
120 Result<void> loadSnapshot(const EditorValue&);
121
122private:
124 bool matches(const SelectionSnapshot&) const;
126 EditorValue contentValue() const;
128 Result<DomainOperation> replacement(EditorValue, std::string = {}) const;
129 std::string id_;
130 std::vector<BiomeLayerValue> layers_;
131 std::vector<std::string> exclusions_;
132};
135public:
137 virtual ~IBiomeSpatialResolver() = default;
144 virtual Result<procgen::SpatialData*> resolve(const std::string&) const = 0;
145};
148public:
162 std::uint32_t seed, float jitter,
163 Revision expectedRevision);
170 procgen::BiomeRules* rules() const { return rules_.get(); }
172 Revision revision() const { return revision_; }
173
174private:
175 std::unique_ptr<procgen::BiomeRules> rules_;
176 Revision revision_ = 0;
177};
178} // namespace eve::biome_editing
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
TileLayer * layer
std::uint32_t seed
Definition PointSet.cpp:807
int spacing
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
Candidate-first BiomeRules generation.
procgen::BiomeRules * rules() const
Published BiomeRules, or null before the first successful publish. @ownership Borrowed from this runt...
Revision revision() const
Revision.
~BiomeDocumentRuntime()
Biome document runtime.
BiomeDocumentRuntime()
Biome document runtime.
Revisioned BiomeRules asset.
Definition BiomeTarget.h:64
const std::vector< std::string > & exclusions() const
Exclusions.
const std::vector< BiomeLayerValue > & layers() const
Layers.
TargetId targetId() const override
Target id.
Definition BiomeTarget.h:74
static CapabilityId propertyCapabilityId()
Capability identity published by describe() for Inspector property editing.
Definition BiomeTarget.h:69
Resolves copied spatial domains for BiomeRules publication.
virtual ~IBiomeSpatialResolver()=default
Releases IBiomeSpatialResolver resources.
virtual Result< procgen::SpatialData * > resolve(const std::string &) const =0
Resolve one authored spatial asset to a generation domain. @ownership Borrowed; the resolver retains ...
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.
Optional capability exposing a deterministic, persistence-safe editing snapshot.
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.
Data-driven biome distribution rules compatible with PointGraph and scene batches.
Definition Biome.h:40
Queryable spatial input for procedural pipelines.
Definition SpatialData.h:35
editing::Revision Revision
Definition BiomeTarget.h:39
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.
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
Stable weighted asset entry in one biome layer.
Definition BiomeTarget.h:45
Stable authored biome layer referencing a spatial asset.
Definition BiomeTarget.h:51
std::vector< BiomeAssetValue > assets
Definition BiomeTarget.h:56
DomainOperation public API.
EditRegion public API.
PropertyDescriptor public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.