载入中...
搜索中...
未找到
SmartObject.cpp
浏览该文件的文档.
10 return std::all_of(position.begin(), position.end(), [](double value) { return std::isfinite(value); });
21 DiagnosticCode::AlreadyExists, "smart object logical id already exists", {}, {}, "npc_ai.smart_object"));
51Result<std::reference_wrapper<SmartObjectWorld::Object>> SmartObjectWorld::resolveObject(SmartObjectHandle handle) {
74Result<std::reference_wrapper<SmartObjectWorld::Claim>> SmartObjectWorld::resolveClaim(SmartObjectClaimHandle handle) {
97Result<void> SmartObjectWorld::removeObject(SmartObjectHandle object, SmartObjectRemoval policy) {
102 return Result<void>::failure(Diagnostic::error(DiagnosticCode::Conflict, "smart object still has live claims",
121Result<std::vector<SmartObjectCandidate>> SmartObjectWorld::query(const SmartObjectQuery& queryValue) const {
122 if (queryValue.activity.empty() || !finitePosition(queryValue.origin) || !std::isfinite(queryValue.maxDistance) ||
125 DiagnosticCode::InvalidArgument, "smart object query is invalid", {}, {}, "npc_ai.smart_object"));
131 if (slot.activity != queryValue.activity || objectSlot.value->claimsBySlot.contains(slot.id)) continue;
151Result<SmartObjectClaimHandle> SmartObjectWorld::claim(AgentHandle agent, SmartObjectHandle object,
154 if (!agent.isValid() || slotId.empty() || leaseTicks == 0 || currentTick > UINT64_MAX - leaseTicks)
156 DiagnosticCode::InvalidArgument, "smart object claim is invalid", {}, {}, "npc_ai.smart_object"));
160 const auto definition = std::find_if(value.definition.slots.begin(), value.definition.slots.end(),
167 DiagnosticCode::Conflict, "smart object slot is already claimed", {}, {}, "npc_ai.smart_object"));
182Result<void> SmartObjectWorld::renew(SmartObjectClaimHandle claimHandle, AgentHandle agent, std::uint64_t currentTick,
186 DiagnosticCode::InvalidArgument, "smart object lease duration is invalid", {}, {}, "npc_ai.smart_object"));
191 return Result<void>::failure(Diagnostic::error(DiagnosticCode::Conflict, "smart object claim owner mismatch",
205 return Result<void>::failure(Diagnostic::error(DiagnosticCode::Conflict, "smart object claim owner mismatch",
243 return Result<SmartObjectExpirationReport>::success({static_cast<std::uint32_t>(expired.size())});
246Result<SmartObjectClaimSnapshot> SmartObjectWorld::snapshot(SmartObjectClaimHandle claimHandle) const {
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
constexpr bool isValid() const noexcept
Returns whether both coordinates are usable handle values.
Definition RuntimeHandle.h:146
constexpr std::optional< RuntimeHandle > nextGeneration() const noexcept
Returns this slot at its next generation.
Definition RuntimeHandle.h:170
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Result< SmartObjectClaimHandle > claim(AgentHandle agent, SmartObjectHandle object, std::string_view slotId, std::uint64_t currentTick, std::uint64_t leaseTicks)
Atomically leases one free slot to an agent for a bounded tick duration.
Definition SmartObject.cpp:151
Result< void > removeObject(SmartObjectHandle object, SmartObjectRemoval policy)
Removes an object using the explicit live-claim policy.
Definition SmartObject.cpp:97
Result< std::vector< SmartObjectCandidate > > query(const SmartObjectQuery &query) const
Returns unclaimed matching slots in deterministic distance/name order.
Definition SmartObject.cpp:121
Result< SmartObjectHandle > registerObject(SmartObjectDefinition definition)
Validates and atomically registers one uniquely named object.
Definition SmartObject.cpp:14
Definition Navigation.cpp:6
RuntimeHandle< SmartObjectHandleTag > SmartObjectHandle
Definition SmartObject.h:24
@ RejectClaimed
RuntimeHandle< SmartObjectClaimHandleTag > SmartObjectClaimHandle
Definition SmartObject.h:25
@ InvalidArgument
@ NotFound
@ PreconditionViolation
@ AlreadyExists
@ StaleHandle
@ Conflict
@ Applied
@ Object
std::vector< std::string > requiredTags
Definition SmartObject.h:47