Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Task_ChangeState.h
Go to the documentation of this file.
1/**
2 * @file Task_ChangeState.h
3 * @brief Atomic AI task that changes the entity's current state.
4 * @author Olympe Engine
5 * @date 2026-03-08
6 *
7 * @details
8 * Task_ChangeState writes a new state name to the "local:current_state" key
9 * in the entity's LocalBlackboard. This is the standard way for VS graphs
10 * to transition AI entities between logical states (e.g. "Idle" → "Patrolling").
11 *
12 * Parameters (ParameterMap):
13 * "StateName" (String) — target state name (required).
14 *
15 * Returns:
16 * Success after writing the new state name.
17 * Failure if "StateName" is missing or if ctx.LocalBB is null.
18 *
19 * C++14 compliant - no C++17/20 features.
20 */
21
22#pragma once
23
24#include "../../IAtomicTask.h"
25
26namespace Olympe {
27
28/**
29 * @class Task_ChangeState
30 * @brief Writes a new AI state name to "local:current_state" in the LocalBlackboard.
31 */
33public:
35
37 const ParameterMap& params) override;
38
39 TaskStatus Execute(const ParameterMap& params) override;
40
41 void Abort() override;
42};
43
44} // namespace Olympe
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
Abstract interface for a single atomic unit of work.
Definition IAtomicTask.h:63
std::unordered_map< std::string, TaskValue > ParameterMap
Convenience alias for the parameter map passed to Execute().
Definition IAtomicTask.h:67
Writes a new AI state name to "local:current_state" in the LocalBlackboard.
TaskStatus Execute(const ParameterMap &params) override
Executes the atomic task for one frame.
TaskStatus ExecuteWithContext(const AtomicTaskContext &ctx, const ParameterMap &params) override
Executes the atomic task for one frame with full runtime context.
void Abort() override
Aborts the task, releasing any in-progress state.
< Provides AssetID and INVALID_ASSET_ID
TaskStatus
Result code returned by IAtomicTask::Execute().
Definition IAtomicTask.h:38
Lightweight context bundle passed to IAtomicTask::ExecuteWithContext().