ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
MTCoroutineStarter.hpp
1#pragma once
2
3#include "../Utils/Il2cpp.hpp"
4#include "../Utils/MonoPtr.hpp"
5
6#include <custom-types/shared/coroutine.hpp>
7#include <System/Collections/IEnumerator.hpp>
8#include <UnityEngine/MonoBehaviour.hpp>
9#include <UnityEngine/Coroutine.hpp>
10
11#include <mutex>
12
13namespace CP_SDK::Unity {
14
15 namespace _u
16 {
17 using namespace System::Collections;
18 using namespace UnityEngine;
19 }
20 namespace _v
21 {
22 using namespace CP_SDK::Utils;
23 }
24
26 class MTCoroutineStarter : public _u::MonoBehaviour
27 {
28 CP_SDK_IL2CPP_INHERIT("CP_SDK.Unity", MTCoroutineStarter, _u::MonoBehaviour);
29 CP_SDK_IL2CPP_DECLARE_CTOR(MTCoroutineStarter);
30 CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR(MTCoroutineStarter);
31
32 private:
34 struct Queue
35 {
37 int WritePos;
38 };
39
40 private:
41 static MTCoroutineStarter* m_Instance;
42
43 static Queue** m_Queues;
44 static bool m_Queued;
45 static int m_FrontQueue;
46 static std::mutex m_Mutex;
47
48 public:
50 static void Initialize();
52 static void Destroy();
53
54 public:
57 static void EnqueueFromThread(_u::IEnumerator* p_Coroutine);
60 static void EnqueueFromThread(custom_types::Helpers::Coroutine&& p_Coroutine);
63 static _u::Coroutine* Start(_u::IEnumerator* p_Coroutine);
66 static _u::Coroutine* Start(custom_types::Helpers::Coroutine&& p_Coroutine);
69 static void Stop(_u::Coroutine* p_Coroutine);
70
71 private:
73 DECLARE_INSTANCE_METHOD(void, Update);
74
75 };
76
77}
78
79CP_SDK_IL2CPP_INHERIT_HELPERS(CP_SDK::Unity::MTCoroutineStarter);
MultiThreading coroutine starter.
static void Initialize()
Unity GameObject initialize.
static void EnqueueFromThread(_u::IEnumerator *p_Coroutine)
Enqueue a new coroutine from thread.
static _u::Coroutine * Start(custom_types::Helpers::Coroutine &&p_Coroutine)
Start coroutine.
static void Stop(_u::Coroutine *p_Coroutine)
Stop coroutine.
static _u::Coroutine * Start(_u::IEnumerator *p_Coroutine)
Start coroutine.
static void EnqueueFromThread(custom_types::Helpers::Coroutine &&p_Coroutine)
Enqueue a new coroutine from thread.
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