ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
MTMainThreadInvoker.hpp
1#pragma once
2
3#include "../Utils/Delegate.hpp"
4#include "../Utils/Il2cpp.hpp"
5
6#include <custom-types/shared/coroutine.hpp>
7#include <UnityEngine/MonoBehaviour.hpp>
8#include <mutex>
9
10namespace CP_SDK::Unity {
11
12 namespace _u
13 {
14 using namespace System;
15 using namespace System::Threading;
16 using namespace UnityEngine;
17 }
18 namespace _v
19 {
20 using namespace CP_SDK::Utils;
21 }
22
24 class MTMainThreadInvoker : public _u::MonoBehaviour
25 {
26 CP_SDK_IL2CPP_INHERIT("CP_SDK.Unity", MTMainThreadInvoker, _u::MonoBehaviour);
27 CP_SDK_IL2CPP_DECLARE_CTOR(MTMainThreadInvoker);
28 CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR(MTMainThreadInvoker);
29
30 private:
32 struct Queue
33 {
34 _v::Action<> ** Data;
35 int WritePos;
36 };
37
38 private:
39 static MTMainThreadInvoker* m_Instance;
40
41 static Queue** m_Queues;
42 static bool m_Queued;
43 static int m_FrontQueue;
44 static std::mutex m_Mutex;
45
46 public:
48 static void Initialize();
50 static void Destroy();
51
52 public:
55 static void Enqueue(_v::CActionRef<> p_Delegate);
56
57 private:
59 DECLARE_INSTANCE_METHOD(void, Update);
60
61 };
62
63}
64
65CP_SDK_IL2CPP_INHERIT_HELPERS(CP_SDK::Unity::MTMainThreadInvoker);
static void Initialize()
Unity GameObject initialize.
static void Enqueue(_v::CActionRef<> p_Delegate)
Enqueue a new action.
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