Olympe Engine
2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Source
TaskSystem
AtomicTasks
Rendering
Task_PlayAnimation.cpp
Go to the documentation of this file.
1
/**
2
* @file Task_PlayAnimation.cpp
3
* @brief Atomic task: request an animation to play on 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_PlayAnimation.h
"
11
#include "../../AtomicTaskRegistry.h"
12
#include "../../LocalBlackboard.h"
13
#include "../../../system/system_utils.h"
14
15
namespace
Olympe
{
16
17
Task_PlayAnimation::Task_PlayAnimation
() {}
18
19
void
Task_PlayAnimation::Abort
()
20
{
21
SYSTEM_LOG
<<
"[Task_PlayAnimation] Abort()\n"
;
22
}
23
24
TaskStatus
Task_PlayAnimation::Execute
(
const
ParameterMap
&
/*params*/
)
25
{
26
return
TaskStatus::Failure
;
// requires context; use ExecuteWithContext
27
}
28
29
TaskStatus
Task_PlayAnimation::ExecuteWithContext
(
const
AtomicTaskContext
&
ctx
,
30
const
ParameterMap
&
params
)
31
{
32
// --- Resolve AnimationName parameter ---
33
std::string
animName
;
34
{
35
auto
it
=
params
.find(
"AnimationName"
);
36
if
(
it
==
params
.end() ||
it
->second.GetType() !=
VariableType::String
)
37
{
38
SYSTEM_LOG
<<
"[Task_PlayAnimation] Missing or invalid 'AnimationName' parameter\n"
;
39
return
TaskStatus::Failure
;
40
}
41
animName
=
it
->second.AsString();
42
}
43
44
// --- Resolve Loop parameter (optional, default false) ---
45
bool
loop =
false
;
46
{
47
auto
it
=
params
.find(
"Loop"
);
48
if
(
it
!=
params
.end() &&
it
->second.GetType() ==
VariableType::Bool
)
49
{
50
loop =
it
->second.AsBool();
51
}
52
}
53
54
SYSTEM_LOG
<<
"[Task_PlayAnimation] Entity "
<<
ctx
.Entity
55
<<
" animation='"
<<
animName
<<
"' loop="
<< (loop ?
"true"
:
"false"
) <<
"\n"
;
56
57
// -----------------------------------------------------------------------
58
// Headless / fallback mode: write to "local:CurrentAnimation" in LocalBB
59
// -----------------------------------------------------------------------
60
// (Future: when an AnimationComponent pointer is added to TaskWorldFacade,
61
// call ctx.ComponentFacade->Animation->Play(animName, loop) here.)
62
if
(!
ctx
.LocalBB)
63
{
64
SYSTEM_LOG
<<
"[Task_PlayAnimation] No LocalBlackboard in context\n"
;
65
return
TaskStatus::Failure
;
66
}
67
68
ctx
.LocalBB->SetValueScoped(
"local:CurrentAnimation"
,
TaskValue
(
animName
));
69
70
SYSTEM_LOG
<<
"[Task_PlayAnimation] Entity "
<<
ctx
.Entity
71
<<
" animation set - Success\n"
;
72
return
TaskStatus::Success
;
73
}
74
75
REGISTER_ATOMIC_TASK
(
Task_PlayAnimation
,
"Task_PlayAnimation"
)
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_PlayAnimation.h
Atomic task that starts an animation on 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_PlayAnimation
Requests an animation to play via ECS or LocalBlackboard.
Definition
Task_PlayAnimation.h:32
Olympe::Task_PlayAnimation::Task_PlayAnimation
Task_PlayAnimation()
Definition
Task_PlayAnimation.cpp:17
Olympe::Task_PlayAnimation::Abort
void Abort() override
Aborts the task, releasing any in-progress state.
Definition
Task_PlayAnimation.cpp:19
Olympe::Task_PlayAnimation::Execute
TaskStatus Execute(const ParameterMap ¶ms) override
Executes the atomic task for one frame.
Definition
Task_PlayAnimation.cpp:24
Olympe::Task_PlayAnimation::ExecuteWithContext
TaskStatus ExecuteWithContext(const AtomicTaskContext &ctx, const ParameterMap ¶ms) override
Executes the atomic task for one frame with full runtime context.
Definition
Task_PlayAnimation.cpp:29
Olympe
< Provides AssetID and INVALID_ASSET_ID
Definition
BTEditorCommand.cpp:16
Olympe::VariableType::String
@ String
std::string
Olympe::VariableType::Bool
@ Bool
Boolean.
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