diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Core/Callbacks/CallbackArray.cpp |
Diffstat (limited to 'Runtime/Core/Callbacks/CallbackArray.cpp')
-rw-r--r-- | Runtime/Core/Callbacks/CallbackArray.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Runtime/Core/Callbacks/CallbackArray.cpp b/Runtime/Core/Callbacks/CallbackArray.cpp new file mode 100644 index 0000000..adea73f --- /dev/null +++ b/Runtime/Core/Callbacks/CallbackArray.cpp @@ -0,0 +1,40 @@ +#include "UnityPrefix.h" +#include "CallbackArray.h" + +CallbackArray::CallbackArray () +{ + for (int i=0;i<kMaxCallback;i++) + m_Callbacks[i] = NULL; +} + +void CallbackArray::Register (SimpleCallback* callback) +{ + for (int i=0;i<kMaxCallback;i++) + { + if (m_Callbacks[i] == NULL) + { + m_Callbacks[i] = callback; + return; + } + } + + AssertString("Callback registration failed. Not enough space."); +} + +void CallbackArray::Unregister (SimpleCallback* callback) +{ + for (int i=0;i<kMaxCallback;i++) + { + if (m_Callbacks[i] == callback) + m_Callbacks[i] = NULL; + } +} + +void CallbackArray::Invoke () +{ + for (int i=0;i<kMaxCallback;i++) + { + if (m_Callbacks[i]) + m_Callbacks[i] (); + } +}
\ No newline at end of file |