Monopoly — Portage moderne 0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
SequenceLifecycleMessage.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "SequenceRuntime.hpp"
4#include "UIMessages.hpp"
5
6#include <optional>
7
8namespace monopoly::sequence
9{
10 // L_Seqncr.cpp publishes the common 60 Hz TopLevelClock in numberE,
11 // regardless of a node's local clock, cadence, or number of render frames.
12 [[nodiscard]] inline std::optional<uimsg::Message> lifecycleMessage(
13 const SequenceEvent& event, std::int32_t topLevelClock)
14 {
15 if (event.label == 0) return std::nullopt;
16 uimsg::Message message{};
17 switch (event.kind)
18 {
21 message.numberD = event.sequenceType;
22 break;
25 message.numberD = event.endingAction;
26 break;
28 message.type = uimsg::Type::SequenceDeleted;
29 message.numberD = event.sequenceType;
30 break;
31 default:
32 return std::nullopt;
33 }
34 message.numberA = static_cast<std::int64_t>(event.dataId);
35 message.numberB = event.priority;
36 message.numberC = event.label;
37 message.numberE = topLevelClock;
38 return message;
39 }
40}
unsigned index
std::optional< uimsg::Message > lifecycleMessage(const SequenceEvent &event, std::int32_t topLevelClock)