Olympe Engine
2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Source
TaskSystem
AtomicTasks
Rendering
Task_SetSprite.cpp
Go to the documentation of this file.
1
/**
2
* @file Task_SetSprite.cpp
3
* @brief Atomic task: set the current sprite reference for an entity.
4
* @author Olympe Engine
5
* @date 2026-03-08
6
*
7
* C++14 compliant - no C++17/20 features.
8
*/
9
10
#include "
Task_SetSprite.h
"
11
#include "../../AtomicTaskRegistry.h"
12
#include "../../LocalBlackboard.h"
13
#include "../../../system/system_utils.h"
14
15
namespace
Olympe
{
16
17
Task_SetSprite::Task_SetSprite
() {}
18
19
void
Task_SetSprite::Abort
()
20
{
21
SYSTEM_LOG
<<
"[Task_SetSprite] Abort()\n"
;
22
}
23
24
TaskStatus
Task_SetSprite::Execute
(
const
ParameterMap
&
/*params*/
)
25
{
26
return
TaskStatus::Failure
;
// requires context; use ExecuteWithContext
27
}
28
29
TaskStatus
Task_SetSprite::ExecuteWithContext
(
const
AtomicTaskContext
&
ctx
,
30
const
ParameterMap
&
params
)
31
{
32
// --- Resolve SpriteRef parameter ---
33
std::string
spriteRef
;
34
{
35
auto
it
=
params
.find(
"SpriteRef"
);
36
if
(
it
==
params
.end() ||
it
->second.GetType() !=
VariableType::String
)
37
{
38
SYSTEM_LOG
<<
"[Task_SetSprite] Missing or invalid 'SpriteRef' parameter\n"
;
39
return
TaskStatus::Failure
;
40
}
41
spriteRef
=
it
->second.AsString();
42
}
43
44
SYSTEM_LOG
<<
"[Task_SetSprite] Entity "
<<
ctx
.Entity
45
<<
" sprite='"
<<
spriteRef
<<
"'\n"
;
46
47
// -----------------------------------------------------------------------
48
// World mode: delegate to render component (stub — render facade not yet
49
// added to TaskWorldFacade; falls through to headless path)
50
// -----------------------------------------------------------------------
51
// (Future: when a RenderComponent pointer is added to TaskWorldFacade,
52
// call ctx.ComponentFacade->Render->SetSprite(spriteRef) here.)
53
54
// -----------------------------------------------------------------------
55
// Headless / fallback mode: write to "local:CurrentSprite" in LocalBB
56
// -----------------------------------------------------------------------
57
if
(!
ctx
.LocalBB)
58
{
59
SYSTEM_LOG
<<
"[Task_SetSprite] No LocalBlackboard in context\n"
;
60
return
TaskStatus::Failure
;
61
}
62
63
ctx
.LocalBB->SetValueScoped(
"local:CurrentSprite"
,
TaskValue
(
spriteRef
));
64
65
SYSTEM_LOG
<<
"[Task_SetSprite] Entity "
<<
ctx
.Entity
66
<<
" sprite set - Success\n"
;
67
return
TaskStatus::Success
;
68
}
69
70
REGISTER_ATOMIC_TASK
(
Task_SetSprite
,
"Task_SetSprite"
)
71
72
}
// 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_SetSprite.h
Atomic task that sets the current sprite reference for an entity.
Olympe::IAtomicTask::ParameterMap
std::unordered_map< std::string, TaskValue > ParameterMap
Convenience alias for the parameter map passed to Execute().
Definition
IAtomicTask.h:67
Olympe::TaskValue
C++14-compliant type-safe value container for task parameters.
Definition
TaskGraphTypes.h:181
Olympe::Task_SetSprite
Sets the current sprite reference via ECS or LocalBlackboard.
Definition
Task_SetSprite.h:32
Olympe::Task_SetSprite::Task_SetSprite
Task_SetSprite()
Definition
Task_SetSprite.cpp:17
Olympe::Task_SetSprite::ExecuteWithContext
TaskStatus ExecuteWithContext(const AtomicTaskContext &ctx, const ParameterMap ¶ms) override
Executes the atomic task for one frame with full runtime context.
Definition
Task_SetSprite.cpp:29
Olympe::Task_SetSprite::Abort
void Abort() override
Aborts the task, releasing any in-progress state.
Definition
Task_SetSprite.cpp:19
Olympe::Task_SetSprite::Execute
TaskStatus Execute(const ParameterMap ¶ms) override
Executes the atomic task for one frame.
Definition
Task_SetSprite.cpp:24
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