Polyphase Game Engine
Loading...
Searching...
No Matches
TimerManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include <string>
5#include "SmartPointer.h"
6#include "ScriptFunc.h"
7
8class ScriptComponent;
9class Node;
10
11typedef void(*TimerHandlerFP)();
12typedef void(*PointerTimerHandlerFP)(void*);
13typedef void(*NodeTimerHandlerFP)(Node* node);
14
15enum class TimerType
16{
17 Void,
18 Object,
19 Node,
21
22 Count
23};
24
26{
27 // Can this be made a union?
28 // Not sure about ActorRef construction/destruction...
29 void* mPointer = nullptr;
32
33 int32_t mId = -1;
34 void* mHandler = nullptr;
35 float mDuration = 0.0f;
36 float mTimeRemaining = 0.0f;
37 bool mLoop = false;
38 bool mPaused = false;
40};
41
43{
44public:
45
46 void Update(float deltaTime);
47
48 // Returns the timer ID.
49 int32_t SetTimer(TimerHandlerFP handler, float time, bool loop = false);
50 int32_t SetTimer(void* vp, PointerTimerHandlerFP handler, float time, bool loop = false);
51 int32_t SetTimer(Node* node, NodeTimerHandlerFP handler, float time, bool loop = false);
52 int32_t SetTimer(ScriptFunc scriptFunc, float time, bool loop = false);
53
54 void ClearAllTimers();
55 void ClearTimer(int32_t id);
56 void PauseTimer(int32_t id);
57 void ResumeTimer(int32_t id);
58 void ResetTimer(int32_t id);
59 float GetTimeRemaining(int32_t id);
60
61 TimerData* FindTimerData(int32_t id, int32_t* outIndex = nullptr);
62
63protected:
64
65 int32_t mNextTimerId = 0;
66 std::vector<TimerData> mTimerData;
67};
68
bool Update()
Definition Engine.cpp:710
void(* TimerHandlerFP)()
Definition TimerManager.h:11
void(* NodeTimerHandlerFP)(Node *node)
Definition TimerManager.h:13
TimerManager * GetTimerManager()
Definition TimerManager.cpp:7
void(* PointerTimerHandlerFP)(void *)
Definition TimerManager.h:12
TimerType
Definition TimerManager.h:16
Definition Node.h:67
Definition ScriptFunc.h:10
Definition TimerManager.h:43
void ClearTimer(int32_t id)
Definition TimerManager.cpp:173
int32_t SetTimer(TimerHandlerFP handler, float time, bool loop=false)
Definition TimerManager.cpp:101
void PauseTimer(int32_t id)
Definition TimerManager.cpp:184
float GetTimeRemaining(int32_t id)
Definition TimerManager.cpp:214
void ResetTimer(int32_t id)
Definition TimerManager.cpp:204
void ResumeTimer(int32_t id)
Definition TimerManager.cpp:194
std::vector< TimerData > mTimerData
Definition TimerManager.h:66
TimerData * FindTimerData(int32_t id, int32_t *outIndex=nullptr)
Definition TimerManager.cpp:228
int32_t mNextTimerId
Definition TimerManager.h:65
void ClearAllTimers()
Definition TimerManager.cpp:167
Definition TimerManager.h:26
int32_t mId
Definition TimerManager.h:33
void * mHandler
Definition TimerManager.h:34
float mTimeRemaining
Definition TimerManager.h:36
void * mPointer
Definition TimerManager.h:29
ScriptFunc mScriptFunc
Definition TimerManager.h:31
float mDuration
Definition TimerManager.h:35
bool mPaused
Definition TimerManager.h:38
TimerType mType
Definition TimerManager.h:39
NodePtr mNode
Definition TimerManager.h:30
bool mLoop
Definition TimerManager.h:37