载入中...
搜索中...
未找到
ActionCollisionIgnoreState.cpp
浏览该文件的文档.
37bool ActionCollisionIgnoreState::supports(eve::action::ActionStateWindowKind kind) const noexcept {
43 if (!lifetime || !world_ || !world_->isValid() || world_->runtimeHandle() != worldHandle_) return nullptr;
55 Diagnostic::error(DiagnosticCode::NotFound, "collision pair resolver is unavailable", "resolver"));
61 DiagnosticCode::InvalidArgument, "collision pair must contain two links owned by this world", "pair"));
65 Diagnostic::error(DiagnosticCode::InvalidArgument, "collision pair bodies must be distinct", "pair"));
73Result<void> ActionCollisionIgnoreState::enter(const eve::action::ActionStateWindowBinding& binding,
78 Diagnostic::error(DiagnosticCode::Unsupported, "physics adapter does not own this window kind", "kind"));
83 Diagnostic::error(DiagnosticCode::NotFound, "collision target index is unavailable", "targetIndex"));
90 Diagnostic::error(DiagnosticCode::NotFound, "collision window has no source or target", "subject"));
108 Diagnostic::error(DiagnosticCode::StaleHandle, "collision pair became stale during enter", "pair"));
120Result<void> ActionCollisionIgnoreState::exit(const eve::action::ActionStateWindowBinding& binding,
125 Diagnostic::error(DiagnosticCode::Unsupported, "physics adapter does not own this window kind", "kind"));
128 if (activeFound == active_.end()) return Result<void>::success(Status::success(StatusCode::NoOp));
142void ActionCollisionIgnoreState::restorePair(const PairKey& key, const PairState& state) noexcept {
146 if (world && first && second) world->setBodyPairCollisionEnabled(first, second, state.restoreEnabled);
159 return Result<void>::success(Status::success(changed ? StatusCode::Applied : StatusCode::NoOp));
Action adapter for temporary 3D body-pair collision ignores.
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
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
3D rigid body (Box3D) in meter-space coordinates (+Y up by convention). Owned by a World3D; create pr...
Definition Body3D.h:24
Box3D rigid-body world. Script coordinates are meters (Box3D native), unlike 2D World which uses pixe...
Definition World3D.h:63
PhysicsWorldHandle runtimeHandle() const noexcept
Process-local identity used by PhysicsLink; invalid after destruction.
Definition World3D.h:141
ActionCollisionIgnoreState(World3D &world, ActionCollisionPairResolver resolver)
Construct an adapter for one borrowed 3D world.
Definition ActionCollisionIgnoreState.cpp:14
Result< void > shutdown()
Unregister and restore every still-live pair to its pre-window state.
Definition ActionCollisionIgnoreState.cpp:155
~ActionCollisionIgnoreState() override
Action collision ignore state.
Definition ActionCollisionIgnoreState.cpp:18
Result< void > enter(const eve::action::ActionStateWindowBinding &binding, const eve::action::ActionTimelineEvent &event, const eve::action::ActionNotifyContext &context) override
Enter one validated window or idempotently observe the same active key.
Definition ActionCollisionIgnoreState.cpp:73
bool enabled() const
Return whether this exact adapter is registered.
Definition ActionCollisionIgnoreState.cpp:23
void setEnabled(bool enabled)
Opt this adapter into or out of Action state-window dispatch.
Definition ActionCollisionIgnoreState.cpp:29
Result< void > exit(const eve::action::ActionStateWindowBinding &binding, const eve::action::ActionTimelineEvent &event, const eve::action::ActionNotifyContext &context) override
Exit one previously entered window by execution and item identity.
Definition ActionCollisionIgnoreState.cpp:120
bool supports(eve::action::ActionStateWindowKind kind) const noexcept override
Whether this sink owns the supplied semantic window kind.
Definition ActionCollisionIgnoreState.cpp:37
ActionStateWindowKind
Stable semantic kind for one built-in state window.
Definition ActionStateWindowBlock.h:16
@ CollisionIgnore
std::function< Result< ActionCollisionPair >(ecs::EntityHandle, std::string_view channel)> ActionCollisionPairResolver
Resolves an action entity and semantic channel to two physics links.
Definition ActionCollisionIgnoreState.h:35
@ InvalidArgument
@ NotFound
@ Unsupported
@ StaleHandle
@ Conflict
@ NoOp
@ Applied
Definition Container.h:602
Context linking a routed event to its action execution.
Definition ActionNotifyRegistry.h:34
Owning validated state-window request authored on an action timeline.
Definition ActionStateWindowBlock.h:19
Owning event projection returned by the runtime sampler.
Definition ActionTimeline.h:146