Dirty region and revision shared by every editable document target. 更多...
#include <EditableTarget.h>
Public 成员函数 | |
| EditableTargetState (Revision initial=1) | |
| Constructs the shared state with an explicit initial revision. | |
| EditRegion | dirtyRegion () const override |
| Return the accumulated dirty region. | |
| void | clearDirtyRegion () override |
| Discard the dirty region; the revision does not change. | |
| std::uint64_t | revision () const override |
| Return the current revision. | |
| Revision | revisionValue () const noexcept |
| Return the revision as the shared protocol revision type. | |
Public 成员函数 继承自 eve::editing::IEditableTarget | |
| virtual | ~IEditableTarget ()=default |
| Releases IEditableTarget resources. | |
| virtual TargetId | targetId () const =0 |
| Target id. | |
| virtual TargetDescriptor | describe () const |
| Describe the target for tools and automation. | |
| virtual void * | queryCapability (const CapabilityId &capability) |
| Query an optional stable capability. | |
| template<class C > | |
| eve::OptionalRef< C > | capability () |
| Query a capability through its interface-owned stable identity. | |
| template<class C > | |
| eve::OptionalRef< const C > | capability () const |
| Capability. | |
| template<class C > | |
| C * | query () |
| Queries query. | |
| template<class C > | |
| const C * | query () const |
| Queries query. | |
Protected 成员函数 | |
| void | widenDirty (int x, int y) |
| Widen the dirty region without advancing the revision. | |
| void | widenDirty (const EditRegion ®ion) |
| Widen the dirty region without advancing the revision. | |
| void | widenDirty () |
| Mark an unknown area dirty without advancing the revision. | |
| void | bumpRevision () |
| Advance the revision without touching the dirty region. | |
| void | setRevision (Revision revision) |
| Adopt a revision observed elsewhere, without advancing it. | |
| void | setDirtyRegion (const EditRegion ®ion) |
| Replace the dirty region wholesale, without advancing the revision. | |
| void | markDirty (int x, int y) |
| Include one cell in the dirty region and advance the revision. | |
| void | markDirty (const EditRegion ®ion) |
| Include a whole region and advance the revision. | |
| void | markDirty () |
| Mark an unknown area dirty and advance the revision. | |
详细描述
Dirty region and revision shared by every editable document target.
Inherit this instead of hand-writing the dirty-region accessors, the revision accessor and their two members in each target. Identity (targetId) and the descriptor's type and capability list stay per-target; only the state is common. Mutation goes through the helpers below rather than through the members, so a target cannot advance its revision without recording what changed. The initial revision is a constructor argument because targets legitimately differ: some start at the first revision, some at "not yet revised".
@ownership Non-owning shared state: a derived target owns this subobject and the state owns only its dirty region and revision values. @lifetime The subobject lives exactly as long as the derived target; the accessors return by value, so no reference escapes. @thread Editing/protocol thread of the owning target; no synchronization is provided here. @reentrancy Side-effect free accessors; the protected mutators touch only this subobject and never invoke callbacks.
- 备注
- Revision here is editing::Revision, the protocol's plain 64-bit revision, not the eve::Revision strong type used by property providers. Keeping the protocol boundary on the plain integer is deliberate: ExpectedRevision/BaseRevision are plain integers too.
EditableTargetState public API.
在文件 EditableTarget.h 第 154 行定义.
构造及析构函数说明
◆ EditableTargetState()
|
inlineexplicit |
Constructs the shared state with an explicit initial revision.
在文件 EditableTarget.h 第 157 行定义.
成员函数说明
◆ bumpRevision()
|
inlineprotected |
Advance the revision without touching the dirty region.
在文件 EditableTarget.h 第 179 行定义.
被这些函数引用 eve::avatar_editing::AvatarDocumentTarget::applyDomainOperation(), eve::hd2d_editing::Hd2dDocumentTarget::applyDomainOperation(), eve::biome_editing::BiomeDocumentTarget::applyDomainOperation(), eve::procgen_editing::TextureRecipeTarget::applyDomainOperation(), eve::sceneloader_editing::SceneImportTarget::applyDomainOperation(), eve::voxel_editing::VoxelCatalogTarget::applyDomainOperation(), eve::voxel_editing::VoxelPaletteTarget::applyDomainOperation(), eve::animation_editing::AnimationClipDocumentTarget::applyDomainOperation(), eve::archspace_editing::ArchSpaceDocumentTarget::applyDomainOperation(), eve::audio_editing::AudioEffectChainTarget::applyDomainOperation(), eve::audio_editing::AudioSourceTarget::applyDomainOperation(), eve::audio_editing::AudioMixerTarget::applyDomainOperation(), eve::building_editing::BuildingPlacementTarget::applyDomainOperation(), eve::camera_editing::CameraDocumentTarget::applyDomainOperation(), eve::crowd_editing::CrowdDocumentTarget::applyDomainOperation(), eve::decal_editing::DecalDocumentTarget::applyDomainOperation(), eve::definitions_editing::DefinitionDocument::applyDomainOperation(), eve::editor::EditorCurveDocument::applyDomainOperation(), eve::editor::PluginPermissionTarget::applyDomainOperation(), eve::editor::ProjectSettingsTarget::applyDomainOperation(), eve::fluids_editing::FluidSimulationTarget::applyDomainOperation(), eve::fluids_editing::SurfaceFluidTarget::applyDomainOperation(), eve::fluids_editing::VolumeFluidTarget::applyDomainOperation(), eve::gpuagents_editing::GpuAgentsDocumentTarget::applyDomainOperation(), eve::lighting_editing::LightingPropertyTargetBase::applyDomainOperation(), eve::material_editing::MaterialDocumentTarget::applyDomainOperation(), eve::map_editing::MapDocumentTarget::applyDomainOperation(), eve::physics_editing::PhysicsColliderTarget::applyDomainOperation(), eve::physics_editing::PhysicsJointTarget::applyDomainOperation(), eve::housegen_editing::HouseGenDocumentTarget::applyDomainOperation(), eve::procgen_editing::SplinePathDocument::applyDomainOperation(), eve::scene_editing::SceneTargetBase::applyDomainOperation(), eve::social_editing::SocialDocumentTarget::applyDomainOperation(), eve::spritestack_editing::SpriteStackDocumentTarget::applyDomainOperation(), eve::stylize_editing::MeshVfxAssetTarget::applyDomainOperation(), eve::stylize_editing::StylizeRecipeTarget::applyDomainOperation(), eve::ui_editing::UiDocumentTarget::applyDomainOperation(), eve::ui_editing::UiThemeCatalogTarget::applyDomainOperation(), eve::virtualgeometry_editing::VirtualGeometryDocumentTarget::applyDomainOperation(), eve::building_editing::BuildingPlacementTarget::commitDomainState(), eve::audio_editing::AudioEffectChainTarget::loadSnapshot(), eve::audio_editing::AudioSourceTarget::loadSnapshot(), eve::audio_editing::AudioMixerTarget::loadSnapshot(), eve::crowd_editing::CrowdDocumentTarget::loadSnapshot(), eve::editor::PluginPermissionTarget::loadSnapshot(), eve::editor::ProjectSettingsTarget::loadSnapshot(), eve::fluids_editing::FluidSimulationTarget::loadSnapshot(), eve::fluids_editing::SurfaceFluidTarget::loadSnapshot(), eve::fluids_editing::VolumeFluidTarget::loadSnapshot(), eve::gpuagents_editing::GpuAgentsDocumentTarget::loadSnapshot(), eve::lighting_editing::LightingPropertyTargetBase::loadSnapshot(), eve::material_editing::MaterialDocumentTarget::loadSnapshot(), eve::map_editing::MapDocumentTarget::loadSnapshot(), eve::physics_editing::PhysicsColliderTarget::loadSnapshot(), eve::social_editing::SocialDocumentTarget::loadSnapshot(), eve::ui_editing::UiDocumentTarget::loadSnapshot(), eve::ui_editing::UiThemeCatalogTarget::loadSnapshot(), markDirty(), markDirty(), markDirty(), eve::definitions_editing::DefinitionDocument::setJson(), eve::definitions_editing::DefinitionDocument::setReferences(), eve::definitions_editing::DefinitionDocument::setVersion() , 以及 eve::level_editing::TileBufferTarget::writeInt().
◆ clearDirtyRegion()
|
inlineoverridevirtual |
Discard the dirty region; the revision does not change.
实现了 eve::editing::IEditableTarget.
在文件 EditableTarget.h 第 163 行定义.
被这些函数引用 eve::editor::EditorCurveDocument::loadSnapshot() , 以及 eve::procgen_editing::SplinePathDocument::loadSnapshot().
◆ dirtyRegion()
|
inlineoverridevirtual |
Return the accumulated dirty region.
实现了 eve::editing::IEditableTarget.
在文件 EditableTarget.h 第 160 行定义.
被这些函数引用 eve::stylize_editing::MeshVfxAssetTarget::operator=().
◆ markDirty() [1/3]
|
inlineprotected |
Mark an unknown area dirty and advance the revision.
Widen dirty.
Bump revision.
在文件 EditableTarget.h 第 199 行定义.
引用了 bumpRevision() , 以及 widenDirty().
◆ markDirty() [2/3]
|
inlineprotected |
Include a whole region and advance the revision.
Widen dirty.
Bump revision.
在文件 EditableTarget.h 第 192 行定义.
引用了 bumpRevision() , 以及 widenDirty().
◆ markDirty() [3/3]
|
inlineprotected |
Include one cell in the dirty region and advance the revision.
Widen dirty.
Bump revision.
在文件 EditableTarget.h 第 185 行定义.
引用了 bumpRevision(), widenDirty(), x , 以及 y.
◆ revision()
|
inlineoverridevirtual |
Return the current revision.
实现了 eve::editing::IEditableTarget.
在文件 EditableTarget.h 第 166 行定义.
被这些函数引用 eve::ui_editing::UiDocumentPreviewService::anchorGizmo(), eve::ui_editor::UiThemeEditor::applyPreviewHost(), eve::spritestack_editing::SpriteStackBakeRuntime::bake(), eve::building_editing::BuildingEdgeCurveDragSession::beginDrag(), eve::procgen_editing::SplinePathDragSession::beginDrag(), eve::decal_editing::DecalGizmoPreviewService::build(), eve::procgen_editing::SplinePathGizmoBuilder::build(), eve::editor::UiSkinPreviewPlanner::build(), eve::ui_editing::UiDocumentPreviewService::build(), eve::ui_editing::UiThemePreviewService::build(), eve::virtualgeometry_editing::VirtualGeometryBuildRuntime::build(), eve::definitions_editing::DefinitionSchemaFormTarget::currentRevision(), eve::scene_editing::ScenePropertyProvider::currentRevision(), eve::building_editing::BuildingEdgeCurveDragSession::finishDrag(), eve::procgen_editing::SplinePathDragSession::finishDrag(), eve::camera_editing::CameraPreview::gizmo(), eve::map_editing::MapObjectImporter::plan(), eve::audio_editing::AudioEffectChainPublisher::publish(), eve::avatar_editing::AvatarDocumentRuntime::publish(), eve::biome_editing::BiomeDocumentRuntime::publish(), eve::camera_editing::CameraDocumentRuntime::publish(), eve::housegen_editing::HouseGenPreviewRuntime::publish(), eve::map_editing::MapRoadMeshPublisher::publish(), eve::stylize_editing::MeshVfxPreviewRuntime::publish(), eve::stylize_editing::StylizeRecipeRuntime::publish(), eve::voxel_editing::VoxelPaletteRuntime::publish(), eve::hd2d_editing::Hd2dDocumentRuntime::publishSprite(), eve::hd2d_editing::Hd2dDocumentRuntime::publishTileMap(), eve::editor::StylizeOffscreenPreviewService::render(), eve::editor::UiOffscreenPreviewRenderer::render(), eve::ui_editor::UiThemeEditor::revision(), eve::audio_editor::AudioSourceEditor::setProperty(), setRevision(), eve::building_editing::BuildingEdgeCurveDragSession::updateDrag() , 以及 eve::procgen_editing::SplinePathDragSession::updateDrag().
◆ revisionValue()
|
inlinenoexcept |
Return the revision as the shared protocol revision type.
在文件 EditableTarget.h 第 169 行定义.
被这些函数引用 eve::material_editing::MaterialBatchTarget::applyDomainOperation(), eve::procgen_editing::SplinePathDocument::applyDomainOperation(), eve::building_editing::BuildingPlacementTarget::cloneDomainState(), eve::avatar_editing::AvatarDocumentTarget::currentRevision(), eve::hd2d_editing::Hd2dDocumentTarget::currentRevision(), eve::biome_editing::BiomeDocumentTarget::currentRevision(), eve::procgen_editing::TextureRecipeTarget::currentRevision(), eve::sceneloader_editing::SceneImportTarget::currentRevision(), eve::voxel_editing::VoxelCatalogTarget::currentRevision(), eve::voxel_editing::VoxelPaletteTarget::currentRevision(), eve::archspace_editing::ArchSpaceDocumentTarget::currentRevision(), eve::audio_editing::AudioSourceTarget::currentRevision(), eve::camera_editing::CameraDocumentTarget::currentRevision(), eve::decal_editing::DecalDocumentTarget::currentRevision(), eve::editor::ProjectSettingsTarget::currentRevision(), eve::fluids_editing::FluidSimulationTarget::currentRevision(), eve::fluids_editing::SurfaceFluidTarget::currentRevision(), eve::fluids_editing::VolumeFluidTarget::currentRevision(), eve::gpuagents_editing::GpuAgentsDocumentTarget::currentRevision(), eve::lighting_editing::LightingPropertyTargetBase::currentRevision(), eve::material_editing::MaterialBatchTarget::currentRevision(), eve::material_editing::MaterialDocumentTarget::currentRevision(), eve::physics_editing::PhysicsColliderTarget::currentRevision(), eve::physics_editing::PhysicsJointTarget::currentRevision(), eve::housegen_editing::HouseGenDocumentTarget::currentRevision(), eve::spritestack_editing::SpriteStackDocumentTarget::currentRevision(), eve::stylize_editing::MeshVfxAssetTarget::currentRevision(), eve::stylize_editing::StylizeRecipeTarget::currentRevision(), eve::ui_editing::UiDocumentTarget::currentRevision(), eve::ui_editing::UiThemeCatalogTarget::currentRevision(), eve::virtualgeometry_editing::VirtualGeometryDocumentTarget::currentRevision(), eve::animation_editing::AnimationClipDocumentTarget::describe(), eve::archspace_editing::ArchSpaceDocumentTarget::describe(), eve::audio_editing::AudioEffectChainTarget::describe(), eve::audio_editing::AudioSourceTarget::describe(), eve::audio_editing::AudioMixerTarget::describe(), eve::avatar_editing::AvatarDocumentTarget::describe(), eve::camera_editing::CameraDocumentTarget::describe(), eve::crowd_editing::CrowdDocumentTarget::describe(), eve::decal_editing::DecalDocumentTarget::describe(), eve::definitions_editing::DefinitionDocument::describe(), eve::editor::EditorCurveDocument::describe(), eve::editor::PluginPermissionTarget::describe(), eve::editor::ProjectSettingsTarget::describe(), eve::fluids_editing::FluidSimulationTarget::describe(), eve::fluids_editing::SurfaceFluidTarget::describe(), eve::fluids_editing::VolumeFluidTarget::describe(), eve::gpuagents_editing::GpuAgentsDocumentTarget::describe(), eve::lighting_editing::LightingPropertyTargetBase::describe(), eve::material_editing::MaterialBatchTarget::describe(), eve::material_editing::MaterialDocumentTarget::describe(), eve::hd2d_editing::Hd2dDocumentTarget::describe(), eve::map_editing::MapDocumentTarget::describe(), eve::physics_editing::PhysicsColliderTarget::describe(), eve::physics_editing::PhysicsJointTarget::describe(), eve::biome_editing::BiomeDocumentTarget::describe(), eve::housegen_editing::HouseGenDocumentTarget::describe(), eve::procgen_editing::SplinePathDocument::describe(), eve::procgen_editing::TextureRecipeTarget::describe(), eve::scene_editing::SceneTargetBase::describe(), eve::sceneloader_editing::SceneImportTarget::describe(), eve::social_editing::SocialDocumentTarget::describe(), eve::spritestack_editing::SpriteStackDocumentTarget::describe(), eve::stylize_editing::MeshVfxAssetTarget::describe(), eve::stylize_editing::StylizeRecipeTarget::describe(), eve::ui_editing::UiDocumentTarget::describe(), eve::ui_editing::UiThemeCatalogTarget::describe(), eve::virtualgeometry_editing::VirtualGeometryDocumentTarget::describe(), eve::voxel_editing::VoxelCatalogTarget::describe(), eve::voxel_editing::VoxelPaletteTarget::describe(), eve::building_editing::BuildingPlacementTarget::edgeCubicBezierGizmo(), eve::archspace_editing::ArchSpaceDocumentTarget::gizmo(), eve::editor::EditorCurveDocument::loadSnapshot(), eve::procgen_editing::SplinePathDocument::loadSnapshot(), eve::building_editing::BuildingPlacementTarget::makeUpdateEdgeCubicBezier(), eve::stylize_editing::MeshVfxAssetTarget::operator=(), eve::crowd_editing::CrowdDocumentTarget::overlay(), eve::building_editing::BuildingPlacementTarget::preview(), eve::animation_editing::AnimationClipDocumentTarget::preview(), eve::editor::EditorCurveDocument::preview(), eve::fluids_editing::FluidSimulationTarget::previewBudget(), eve::fluids_editing::VolumeFluidTarget::previewBudget(), eve::building_editing::BuildingPlacementTarget::previewEdgeCubicBezier(), eve::animation_editing::AnimationClipDocumentTarget::previewRetarget() , 以及 eve::map_editing::MapDocumentTarget::previewRoad().
◆ setDirtyRegion()
|
inlineprotected |
Replace the dirty region wholesale, without advancing the revision.
在文件 EditableTarget.h 第 183 行定义.
被这些函数引用 eve::map_editing::MapDocumentTarget::commitDomainState(), eve::scene_editing::SceneTargetBase::commitDomainState() , 以及 eve::stylize_editing::MeshVfxAssetTarget::operator=().
◆ setRevision()
|
inlineprotected |
Adopt a revision observed elsewhere, without advancing it.
在文件 EditableTarget.h 第 181 行定义.
引用了 revision().
被这些函数引用 eve::procgen_editing::SplinePathDocument::applyDomainOperation(), eve::map_editing::MapDocumentTarget::commitDomainState(), eve::scene_editing::SceneTargetBase::commitDomainState(), eve::animation_editing::AnimationClipDocumentTarget::loadSnapshot(), eve::editor::EditorCurveDocument::loadSnapshot(), eve::procgen_editing::SplinePathDocument::loadSnapshot() , 以及 eve::stylize_editing::MeshVfxAssetTarget::operator=().
◆ widenDirty() [1/3]
|
inlineprotected |
Mark an unknown area dirty without advancing the revision.
在文件 EditableTarget.h 第 177 行定义.
引用了 eve::editing::EditRegion::include().
被这些函数引用 eve::avatar_editing::AvatarDocumentTarget::applyDomainOperation(), eve::hd2d_editing::Hd2dDocumentTarget::applyDomainOperation(), eve::biome_editing::BiomeDocumentTarget::applyDomainOperation(), eve::procgen_editing::TextureRecipeTarget::applyDomainOperation(), eve::sceneloader_editing::SceneImportTarget::applyDomainOperation(), eve::voxel_editing::VoxelCatalogTarget::applyDomainOperation(), eve::voxel_editing::VoxelPaletteTarget::applyDomainOperation(), eve::animation_editing::AnimationClipDocumentTarget::applyDomainOperation(), eve::archspace_editing::ArchSpaceDocumentTarget::applyDomainOperation(), eve::audio_editing::AudioEffectChainTarget::applyDomainOperation(), eve::audio_editing::AudioSourceTarget::applyDomainOperation(), eve::audio_editing::AudioMixerTarget::applyDomainOperation(), eve::building_editing::BuildingPlacementTarget::applyDomainOperation(), eve::camera_editing::CameraDocumentTarget::applyDomainOperation(), eve::crowd_editing::CrowdDocumentTarget::applyDomainOperation(), eve::decal_editing::DecalDocumentTarget::applyDomainOperation(), eve::definitions_editing::DefinitionDocument::applyDomainOperation(), eve::editor::EditorCurveDocument::applyDomainOperation(), eve::editor::PluginPermissionTarget::applyDomainOperation(), eve::editor::ProjectSettingsTarget::applyDomainOperation(), eve::fluids_editing::FluidSimulationTarget::applyDomainOperation(), eve::fluids_editing::SurfaceFluidTarget::applyDomainOperation(), eve::fluids_editing::VolumeFluidTarget::applyDomainOperation(), eve::lighting_editing::LightingPropertyTargetBase::applyDomainOperation(), eve::material_editing::MaterialDocumentTarget::applyDomainOperation(), eve::map_editing::MapDocumentTarget::applyDomainOperation(), eve::physics_editing::PhysicsColliderTarget::applyDomainOperation(), eve::physics_editing::PhysicsJointTarget::applyDomainOperation(), eve::housegen_editing::HouseGenDocumentTarget::applyDomainOperation(), eve::procgen_editing::SplinePathDocument::applyDomainOperation(), eve::scene_editing::SceneTargetBase::applyDomainOperation(), eve::social_editing::SocialDocumentTarget::applyDomainOperation(), eve::spritestack_editing::SpriteStackDocumentTarget::applyDomainOperation(), eve::stylize_editing::MeshVfxAssetTarget::applyDomainOperation(), eve::stylize_editing::StylizeRecipeTarget::applyDomainOperation(), eve::ui_editing::UiDocumentTarget::applyDomainOperation(), eve::ui_editing::UiThemeCatalogTarget::applyDomainOperation(), eve::virtualgeometry_editing::VirtualGeometryDocumentTarget::applyDomainOperation(), eve::building_editing::BuildingPlacementTarget::commitDomainState(), eve::audio_editing::AudioEffectChainTarget::loadSnapshot(), eve::crowd_editing::CrowdDocumentTarget::loadSnapshot(), eve::editor::PluginPermissionTarget::loadSnapshot(), eve::editor::ProjectSettingsTarget::loadSnapshot(), eve::social_editing::SocialDocumentTarget::loadSnapshot(), markDirty(), markDirty(), markDirty(), eve::definitions_editing::DefinitionDocument::setJson(), eve::definitions_editing::DefinitionDocument::setReferences(), eve::definitions_editing::DefinitionDocument::setVersion() , 以及 eve::level_editing::TileBufferTarget::writeInt().
◆ widenDirty() [2/3]
|
inlineprotected |
Widen the dirty region without advancing the revision.
在文件 EditableTarget.h 第 175 行定义.
◆ widenDirty() [3/3]
|
inlineprotected |
Widen the dirty region without advancing the revision.
在文件 EditableTarget.h 第 173 行定义.
引用了 eve::editing::EditRegion::include(), x , 以及 y.
被这些函数引用 eve::procgen_editing::SplinePathDocument::applyDomainOperation() , 以及 eve::animation_editing::AnimationClipDocumentTarget::loadSnapshot().
该类的文档由以下文件生成:
- src/modules/editing/EditableTarget.h
Public 成员函数 继承自