Olympe Engine
2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Source
TaskSystem
AtomicTasks
Blackboard
Task_SetVariable.cpp
Go to the documentation of this file.
1
/**
2
* @file Task_SetVariable.cpp
3
* @brief Atomic task: write a value into the LocalBlackboard.
4
* @author Olympe Engine
5
* @date 2026-02-23
6
*
7
* C++14 compliant - no C++17/20 features.
8
*/
9
10
#include "
Task_SetVariable.h
"
11
#include "../../AtomicTaskRegistry.h"
12
#include "../../LocalBlackboard.h"
13
#include "../../../system/system_utils.h"
14
15
namespace
Olympe
{
16
17
Task_SetVariable::Task_SetVariable
() {}
18
19
void
Task_SetVariable::Abort
()
20
{
21
SYSTEM_LOG
<<
"[Task_SetVariable] Abort()\n"
;
22
}
23
24
TaskStatus
Task_SetVariable::Execute
(
const
ParameterMap
&
/*params*/
)
25
{
26
return
TaskStatus::Failure
;
// requires context; use ExecuteWithContext
27
}
28
29
TaskStatus
Task_SetVariable::ExecuteWithContext
(
const
AtomicTaskContext
&
ctx
,
30
const
ParameterMap
&
params
)
31
{
32
// --- Resolve VarName parameter ---
33
std::string
varName
;
34
{
35
auto
it
=
params
.find(
"VarName"
);
36
if
(
it
==
params
.end() ||
it
->second.GetType() !=
VariableType::String
)
37
{
38
SYSTEM_LOG
<<
"[Task_SetVariable] Missing or invalid 'VarName' parameter\n"
;
39
return
TaskStatus::Failure
;
40
}
41
varName
=
it
->second.AsString();
42
}
43
44
// --- Resolve Value parameter ---
45
auto
valueIt
=
params
.find(
"Value"
);
46
if
(
valueIt
==
params
.end() ||
valueIt
->second.IsNone())
47
{
48
SYSTEM_LOG
<<
"[Task_SetVariable] Missing 'Value' parameter\n"
;
49
return
TaskStatus::Failure
;
50
}
51
52
// --- Write to LocalBlackboard ---
53
if
(!
ctx
.LocalBB)
54
{
55
SYSTEM_LOG
<<
"[Task_SetVariable] No LocalBlackboard in context\n"
;
56
return
TaskStatus::Failure
;
57
}
58
59
try
60
{
61
ctx
.LocalBB->SetValue(
varName
,
valueIt
->second);
62
}
63
catch
(
const
std::exception&
e
)
64
{
65
SYSTEM_LOG
<<
"[Task_SetVariable] Failed to set '"
<<
varName
66
<<
"': "
<<
e
.what() <<
"\n"
;
67
return
TaskStatus::Failure
;
68
}
69
70
SYSTEM_LOG
<<
"[Task_SetVariable] Entity "
<<
ctx
.Entity
71
<<
" set '"
<<
varName
<<
"' - Success\n"
;
72
return
TaskStatus::Success
;
73
}
74
75
REGISTER_ATOMIC_TASK
(
Task_SetVariable
,
"Task_SetVariable"
)
76
77
}
// namespace Olympe
REGISTER_ATOMIC_TASK
#define REGISTER_ATOMIC_TASK(ClassName, Id)
Registers a factory for ClassName under Id at static init time.
Definition
AtomicTaskRegistry.h:119
GetComponentTypeID_Static
ComponentTypeID GetComponentTypeID_Static()
Definition
ECS_Entity.h:56
Task_SetVariable.h
Atomic task that writes a value into the LocalBlackboard.
Olympe::IAtomicTask::ParameterMap
std::unordered_map< std::string, TaskValue > ParameterMap
Convenience alias for the parameter map passed to Execute().
Definition
IAtomicTask.h:67
Olympe::Task_SetVariable
Atomic task that writes a value into the LocalBlackboard.
Definition
Task_SetVariable.h:34
Olympe::Task_SetVariable::Execute
TaskStatus Execute(const ParameterMap ¶ms) override
Executes the atomic task for one frame.
Definition
Task_SetVariable.cpp:24
Olympe::Task_SetVariable::Task_SetVariable
Task_SetVariable()
Definition
Task_SetVariable.cpp:17
Olympe::Task_SetVariable::Abort
void Abort() override
Aborts the task, releasing any in-progress state.
Definition
Task_SetVariable.cpp:19
Olympe::Task_SetVariable::ExecuteWithContext
TaskStatus ExecuteWithContext(const AtomicTaskContext &ctx, const ParameterMap ¶ms) override
Executes the atomic task for one frame with full runtime context.
Definition
Task_SetVariable.cpp:29
Olympe
< Provides AssetID and INVALID_ASSET_ID
Definition
BTEditorCommand.cpp:16
Olympe::VariableType::String
@ String
std::string
Olympe::TaskStatus
TaskStatus
Result code returned by IAtomicTask::Execute().
Definition
IAtomicTask.h:38
Olympe::TaskStatus::Success
@ Success
Task completed successfully.
Olympe::TaskStatus::Failure
@ Failure
Task failed.
Olympe::AtomicTaskContext
Lightweight context bundle passed to IAtomicTask::ExecuteWithContext().
Definition
AtomicTaskContext.h:36
SYSTEM_LOG
#define SYSTEM_LOG
Definition
system_utils.h:23
Generated on Mon Apr 13 2026 08:15:20 for Olympe Engine by
1.9.8