载入中...
搜索中...
未找到
eve::building_editing::BuildingPlacementTarget类 参考final

Live PlacementWorld target with reversible place/move/remove operations. 更多...

#include <BuildingTarget.h>

类 eve::building_editing::BuildingPlacementTarget 继承关系图:
eve::editing::EditableTargetState eve::editing::IEditableTarget eve::editing::IDomainOperationTarget eve::editing::IDomainOperationTargetStaging eve::editing::IEditableTarget eve::editing::IEditableTarget

Public 成员函数

 BuildingPlacementTarget (std::string id, building::PlacementWorld *world)
 Bind a borrowed world that must outlive the target.
 
 BuildingPlacementTarget (BuildingPlacementTarget &&) noexcept
 Out-of-line special members; ownedWorld_ holds a forward-declared building::PlacementWorld.
 
BuildingPlacementTarget & operator= (BuildingPlacementTarget &&) noexcept
 Operator =.
 
 BuildingPlacementTarget (const BuildingPlacementTarget &)=delete
 
BuildingPlacementTarget & operator= (const BuildingPlacementTarget &)=delete
 
 ~BuildingPlacementTarget ()
 Building placement target.
 
TargetId targetId () const override
 Target id.
 
TargetDescriptor describe () const override
 Describe.
 
void * queryCapability (const CapabilityId &capability) override
 Query an optional target capability.
 
Result< void > applyDomainOperation (const DomainOperation &operation) override
 Applies domain operation.
 
std::unique_ptr< IDomainOperationTarget > cloneDomainState () const override
 Clones domain state.
 
Result< void > commitDomainState (std::unique_ptr< IDomainOperationTarget > candidate) override
 Commits domain state.
 
Result< BuildingInstanceSnapshot > instance (int instanceId) const
 Return a complete immutable instance snapshot.
 
int nextAvailableInstanceId () const
 Return the smallest currently unused positive instance id.
 
BuildingPlacementPreview preview (const std::string &buildingId, double worldX, double worldY, double elevation, double rotationDegrees, int excludeInstanceId=0) const
 Preview snap, normalized rotation, footprint cells and validation reasons.
 
Result< DomainOperation > makePlace (const BuildingInstanceSnapshot &placed) const
 Plan reversible exact-id placement after full footprint validation.
 
Result< DomainOperation > makeMove (int instanceId, int cellX, int cellY, double rotationDegrees) const
 Plan reversible movement of an existing building.
 
Result< DomainOperation > makeMoveFree (int instanceId, double worldX, double worldY, double elevation, double rotationDegrees) const
 Build an exact free-domain move operation without grid snapping.
 
Result< DomainOperation > makeReplace (int instanceId, const std::string &replacementBuildingId) const
 Plan a reversible cell-definition replacement preserving instance state.
 
Result< DomainOperation > makeRectangle (const std::string &buildingId, int minCellX, int minCellY, int maxCellX, int maxCellY, double rotationDegrees) const
 Plan one atomic reversible rectangular placement gesture.
 
Result< DomainOperation > makeBrush (const std::string &buildingId, int centerCellX, int centerCellY, int radius, double rotationDegrees) const
 Plan one atomic reversible circular-brush placement gesture.
 
Result< DomainOperation > makeEdgePath (const std::string &buildingId, const std::vector< BuildingEdgePathVertex > &vertices) const
 Plan one atomic reversible multi-segment edge path gesture.
 
Result< DomainOperation > makeEdgeCubicBezier (const std::string &buildingId, const std::vector< BuildingEdgeCurvePoint > &controlPoints, int subdivisions) const
 Plan one atomic reversible cubic Bezier edge-curve gesture.
 
Result< DomainOperation > makeEdgeCubicBezierOnSurface (const std::string &buildingId, const std::vector< BuildingEdgeCurvePoint > &controlPoints, int subdivisions, const std::string &surfaceName) const
 Plan one atomic reversible cubic curve sampled on a named surface.
 
BuildingEdgeCurvePreview previewEdgeCubicBezier (const std::string &buildingId, const std::vector< BuildingEdgeCurvePoint > &controlPoints, int subdivisions, int replacingMemberInstanceId=0, const std::string &surfaceName={}) const
 Recompute an immutable interactive curve draft without mutating the world.
 
editing::GizmoSnapshot edgeCubicBezierGizmo (const std::string &buildingId, const std::vector< BuildingEdgeCurvePoint > &controlPoints, int subdivisions, int level=0, int replacingMemberInstanceId=0, const std::string &surfaceName={}) const
 Build renderer-neutral handles, tangent lines and sampled path for a curve draft.
 
Result< DomainOperation > makeUpdateEdgeCubicBezier (int memberInstanceId, const std::vector< BuildingEdgeCurvePoint > &controlPoints, int subdivisions) const
 Plan atomic replacement of an existing curve group after a handle drag.
 
Result< BuildingEdgeCurvePoint > curveLogicalPointFromWorld (double worldX, double worldY, double worldZ) const
 Convert a world-space point to continuous logical grid coordinates.
 
Result< DomainOperation > makeRemove (int instanceId) const
 Plan reversible removal preserving properties, tags and garrison state.
 
EditorValue snapshotValue () const
 Capture all instances in deterministic insertion order.
 
- Public 成员函数 继承自 eve::editing::EditableTargetState
 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.
 
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.
 
- Public 成员函数 继承自 eve::editing::IDomainOperationTarget
 ~IDomainOperationTarget () override=default
 Releases IDomainOperationTarget resources.
 
- Public 成员函数 继承自 eve::editing::IDomainOperationTargetStaging
virtual ~IDomainOperationTargetStaging ()=default
 Releases IDomainOperationTargetStaging resources.
 

静态 Public 成员函数

static CapabilityId editorCapabilityId ()
 Stable capability id for placement preview and mutation.
 

额外继承的成员函数

- Protected 成员函数 继承自 eve::editing::EditableTargetState
void widenDirty (int x, int y)
 Widen the dirty region without advancing the revision.
 
void widenDirty (const EditRegion &region)
 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 &region)
 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 &region)
 Include a whole region and advance the revision.
 
void markDirty ()
 Mark an unknown area dirty and advance the revision.
 

详细描述

Live PlacementWorld target with reversible place/move/remove operations.

在文件 BuildingTarget.h 第 156 行定义.

构造及析构函数说明

◆ BuildingPlacementTarget() [1/3]

eve::building_editing::BuildingPlacementTarget::BuildingPlacementTarget ( std::string  id,
building::PlacementWorld *  world 
)

Bind a borrowed world that must outlive the target.

在文件 BuildingTarget.cpp 第 501 行定义.

◆ BuildingPlacementTarget() [2/3]

eve::building_editing::BuildingPlacementTarget::BuildingPlacementTarget ( BuildingPlacementTarget &&  )
defaultnoexcept

Out-of-line special members; ownedWorld_ holds a forward-declared building::PlacementWorld.

A class-level export macro makes MSVC instantiate every member in every translation unit that includes this header (OBJECT mode: the macro is a plain __declspec(dllexport)). The implicitly-defined destructor then has to delete ownedWorld_, which needs the complete type and fails with C2027/C2338 ("can't delete an incomplete type") in the TUs that only forward-declare it (measured: building/editor/building_editor.cpp). Declaring them here and defaulting them in BuildingTarget.cpp — where PlacementWorld.h is included — keeps the semantics identical and gives the other TUs something to call.

◆ BuildingPlacementTarget() [3/3]

eve::building_editing::BuildingPlacementTarget::BuildingPlacementTarget ( const BuildingPlacementTarget &  )
delete

◆ ~BuildingPlacementTarget()

eve::building_editing::BuildingPlacementTarget::~BuildingPlacementTarget ( )
default

Building placement target.

成员函数说明

◆ applyDomainOperation()

Result< void > eve::building_editing::BuildingPlacementTarget::applyDomainOperation ( const DomainOperation &  operation)
overridevirtual

Applies domain operation.

实现了 eve::editing::IDomainOperationTarget.

在文件 BuildingTarget.cpp 第 1206 行定义.

引用了 eve::building::EdgeAddress::axis, eve::building::PlacedBuilding::buildingId, eve::building::PlacementWorld::buildings(), eve::editing::EditableTargetState::bumpRevision(), eve::building::PlacementSystem::canPlaceCorner(), eve::building::PlacementSystem::canPlaceEdge(), eve::building::PlacementSystem::canPlaceElev(), eve::building::PlacementSystem::canPlaceFree(), cloneDomainState(), commitDomainState(), eve::building::PlacedBuilding::corner, current, eve::building::PlacedBuilding::edge, eve::building::PlacedBuilding::elevation, eve::building::BuildingRegistry::find(), eve::building::PlacedBuilding::garrison, eve::building::PlacedBuilding::garrisonRevision, eve::building::PlacementWorld::hasBuilding(), instance(), eve::building::PlacedBuilding::instanceId, eve::building::PlacedBuilding::level, members, eve::building::PlacementSystem::moveBuildingResult(), eve::building::PlacementSystem::moveCornerResult(), eve::building::PlacementSystem::moveEdgeResult(), eve::building::PlacementSystem::moveFreeResult(), operation, eve::building::PlacedBuilding::originCellX, eve::building::PlacedBuilding::originCellY, eve::building::BuildingDefinition::placementKind, eve::building::PlacedBuilding::placementKind, eve::building::PlacedBuilding::props, eve::building::PlacementSystem::removeBuilding(), eve::building::PlacementSystem::replaceBuildingResult(), eve::building::Restored, eve::building::PlacementSystem::restoreEdgeCurveGroupExact(), eve::building::PlacementSystem::restoreExact(), eve::building::PlacedBuilding::rotationDeg, eve::building::PlacedBuilding::surfaceHeightDelta, eve::building::PlacedBuilding::surfaceId, eve::building::PlacedBuilding::surfaceMaxSlopeDegrees, eve::building::PlacedBuilding::surfaceNormalX, eve::building::PlacedBuilding::surfaceNormalY, eve::building::PlacedBuilding::surfaceNormalZ, eve::building::PlacedBuilding::surfaceRevision, eve::building::PlacedBuilding::surfaceSampleCount, eve::building::PlacedBuilding::surfaceTangentX, eve::building::PlacedBuilding::surfaceTangentY, eve::building::PlacedBuilding::surfaceTangentZ, eve::building::PlacedBuilding::tags, updated, valid, eve::building::Vertical, eve::editing::EditableTargetState::widenDirty(), eve::building::PlacedBuilding::worldX, eve::building::PlacedBuilding::worldY, eve::building::EdgeAddress::x, eve::building::CornerAddress::x, eve::building::EdgeAddress::y , 以及 eve::building::CornerAddress::y.

◆ cloneDomainState()

std::unique_ptr< IDomainOperationTarget > eve::building_editing::BuildingPlacementTarget::cloneDomainState ( ) const
overridevirtual

◆ commitDomainState()

Result< void > eve::building_editing::BuildingPlacementTarget::commitDomainState ( std::unique_ptr< IDomainOperationTarget >  candidate)
overridevirtual

◆ curveLogicalPointFromWorld()

Result< BuildingEdgeCurvePoint > eve::building_editing::BuildingPlacementTarget::curveLogicalPointFromWorld ( double  worldX,
double  worldY,
double  worldZ 
) const

◆ describe()

◆ edgeCubicBezierGizmo()

◆ editorCapabilityId()

static CapabilityId eve::building_editing::BuildingPlacementTarget::editorCapabilityId ( )
inlinestatic

Stable capability id for placement preview and mutation.

在文件 BuildingTarget.h 第 162 行定义.

被这些函数引用 queryCapability().

◆ instance()

Result< BuildingInstanceSnapshot > eve::building_editing::BuildingPlacementTarget::instance ( int  instanceId) const

Return a complete immutable instance snapshot.

在文件 BuildingTarget.cpp 第 529 行定义.

引用了 eve::building::PlacementWorld::buildings() , 以及 found.

被这些函数引用 applyDomainOperation(), makeMove(), makeMoveFree(), makeRemove() , 以及 makeReplace().

◆ makeBrush()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeBrush ( const std::string &  buildingId,
int  centerCellX,
int  centerCellY,
int  radius,
double  rotationDegrees 
) const

Plan one atomic reversible circular-brush placement gesture.

在文件 BuildingTarget.cpp 第 787 行定义.

引用了 preview(), eve::building::PlacementSystem::previewBrush(), radius , 以及 rotationDegrees.

◆ makeEdgeCubicBezier()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeEdgeCubicBezier ( const std::string &  buildingId,
const std::vector< BuildingEdgeCurvePoint > &  controlPoints,
int  subdivisions 
) const

Plan one atomic reversible cubic Bezier edge-curve gesture.

在文件 BuildingTarget.cpp 第 855 行定义.

引用了 point.

被这些函数引用 makeEdgeCubicBezierOnSurface() , 以及 makeUpdateEdgeCubicBezier().

◆ makeEdgeCubicBezierOnSurface()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeEdgeCubicBezierOnSurface ( const std::string &  buildingId,
const std::vector< BuildingEdgeCurvePoint > &  controlPoints,
int  subdivisions,
const std::string &  surfaceName 
) const

Plan one atomic reversible cubic curve sampled on a named surface.

在文件 BuildingTarget.cpp 第 899 行定义.

引用了 makeEdgeCubicBezier(), operation , 以及 point.

◆ makeEdgePath()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeEdgePath ( const std::string &  buildingId,
const std::vector< BuildingEdgePathVertex > &  vertices 
) const

Plan one atomic reversible multi-segment edge path gesture.

在文件 BuildingTarget.cpp 第 799 行定义.

引用了 vertices.

◆ makeMove()

◆ makeMoveFree()

◆ makePlace()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makePlace ( const BuildingInstanceSnapshot &  placed) const

◆ makeRectangle()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeRectangle ( const std::string &  buildingId,
int  minCellX,
int  minCellY,
int  maxCellX,
int  maxCellY,
double  rotationDegrees 
) const

Plan one atomic reversible rectangular placement gesture.

在文件 BuildingTarget.cpp 第 774 行定义.

引用了 preview(), eve::building::PlacementSystem::previewRectangle() , 以及 rotationDegrees.

◆ makeRemove()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeRemove ( int  instanceId) const

Plan reversible removal preserving properties, tags and garrison state.

在文件 BuildingTarget.cpp 第 1197 行定义.

引用了 current , 以及 instance().

◆ makeReplace()

◆ makeUpdateEdgeCubicBezier()

Result< DomainOperation > eve::building_editing::BuildingPlacementTarget::makeUpdateEdgeCubicBezier ( int  memberInstanceId,
const std::vector< BuildingEdgeCurvePoint > &  controlPoints,
int  subdivisions 
) const

◆ nextAvailableInstanceId()

int eve::building_editing::BuildingPlacementTarget::nextAvailableInstanceId ( ) const

Return the smallest currently unused positive instance id.

在文件 BuildingTarget.cpp 第 541 行定义.

引用了 eve::building::PlacementWorld::hasBuilding().

◆ operator=() [1/2]

BuildingPlacementTarget & eve::building_editing::BuildingPlacementTarget::operator= ( BuildingPlacementTarget &&  )
defaultnoexcept

Operator =.

◆ operator=() [2/2]

BuildingPlacementTarget & eve::building_editing::BuildingPlacementTarget::operator= ( const BuildingPlacementTarget &  )
delete

◆ preview()

BuildingPlacementPreview eve::building_editing::BuildingPlacementTarget::preview ( const std::string &  buildingId,
double  worldX,
double  worldY,
double  elevation,
double  rotationDegrees,
int  excludeInstanceId = 0 
) const

◆ previewEdgeCubicBezier()

BuildingEdgeCurvePreview eve::building_editing::BuildingPlacementTarget::previewEdgeCubicBezier ( const std::string &  buildingId,
const std::vector< BuildingEdgeCurvePoint > &  controlPoints,
int  subdivisions,
int  replacingMemberInstanceId = 0,
const std::string &  surfaceName = {} 
) const

◆ queryCapability()

void * eve::building_editing::BuildingPlacementTarget::queryCapability ( const CapabilityId &  capability)
overridevirtual

Query an optional target capability.

返回
Borrowed pointer owned by this target, or null. @lifetime Valid until this target is destroyed or mutated.

重载 eve::editing::IEditableTarget .

在文件 BuildingTarget.cpp 第 525 行定义.

引用了 eve::editing::IEditableTarget::capability() , 以及 editorCapabilityId().

◆ snapshotValue()

◆ targetId()

TargetId eve::building_editing::BuildingPlacementTarget::targetId ( ) const
inlineoverridevirtual

Target id.

实现了 eve::editing::IEditableTarget.

在文件 BuildingTarget.h 第 186 行定义.

被这些函数引用 commitDomainState().


该类的文档由以下文件生成: