Plasma Engine  2.0
Loading...
Searching...
No Matches
EventTrack.h
1#pragma once
2
3#include <Foundation/Basics.h>
4#include <Foundation/Containers/DynamicArray.h>
5#include <Foundation/Containers/HybridArray.h>
6#include <Foundation/Strings/HashedString.h>
7#include <Foundation/Time/Time.h>
8
14class PL_FOUNDATION_DLL plEventTrack
15{
16public:
19
21 void Clear();
22
24 bool IsEmpty() const;
25
27 void AddControlPoint(plTime time, plStringView sEvent);
28
34 void Sample(plTime rangeStart, plTime rangeEnd, plDynamicArray<plHashedString>& out_events) const;
35
36 void Save(plStreamWriter& inout_stream) const;
37 void Load(plStreamReader& inout_stream);
38
39private:
40 struct ControlPoint
41 {
42 PL_ALWAYS_INLINE bool operator<(const ControlPoint& rhs) const { return m_Time < rhs.m_Time; }
43
44 plTime m_Time;
45 plUInt32 m_uiEvent;
46 };
47
48 plUInt32 FindControlPointAfter(plTime x) const;
49 plInt32 FindControlPointBefore(plTime x) const;
50
51 mutable bool m_bSort = false;
52 mutable plDynamicArray<ControlPoint> m_ControlPoints;
54};
Definition DynamicArray.h:81
An event track is a time line that contains named events.
Definition EventTrack.h:15
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12