ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
MTThreadInvoker.hpp
1#pragma once
2
3#include "../Utils/Delegate.hpp"
4#include "../Utils/Il2cpp.hpp"
5#include "../Utils/MonoPtr.hpp"
6
7#include <mutex>
8
9#include <System/Threading/Thread.hpp>
10
11namespace CP_SDK::Unity {
12
13 namespace _u
14 {
15 using namespace System;
16 using namespace System::Threading;
17 }
18 namespace _v
19 {
20 using namespace CP_SDK::Utils;
21 }
22
25 {
26 private:
28 struct Queue
29 {
30 _v::Action<>** Data;
31 int WritePos;
32 };
33
34 private:
35 static bool m_RunCondition;
36 static _v::MonoPtr<_u::Thread> m_UpdateThread;
37 static Queue** m_Queues;
38 static bool m_Queued;
39 static int m_FrontQueue;
40 static std::mutex m_Mutex;
41
42 public:
44 static void Initialize();
46 static void Destroy();
47
48 public:
51 static void EnqueueOnThread(_v::CActionRef<> p_Delegate);
52
53 public:
55 static void __INTERNAL_Update();
56
57 };
58
61
63 class __MTThreadInvokerDummy : public Il2CppObject
64 {
65 CP_SDK_IL2CPP_INHERIT("CP_SDK.Unity", __MTThreadInvokerDummy, Il2CppObject);
66
67 public:
70
71 };
72
73}
74
75CP_SDK_IL2CPP_INHERIT_HELPERS(CP_SDK::Unity::__MTThreadInvokerDummy);
Dummy il2cpp object for thread start.
DECLARE_STATIC_METHOD(void, Dummy)
Dummy method for thread start.
static void __INTERNAL_Update()
Thread update.
static void EnqueueOnThread(_v::CActionRef<> p_Delegate)
Enqueue a new action.
static void Destroy()
Stop.
static void Initialize()
Initialize.
Tools and extensions to interact with Unity on different layer & threads, load fonts/sprites/textures...
Various platform utils like Delegate/Action/Function/Event system.
Definition Delegate.hpp:8