forked from RbxStu/RbxStu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRBXScheduler.h
150 lines (112 loc) · 3.2 KB
/
RBXScheduler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
//
// Created by Dottik on 13/4/2024.
//
#pragma once
#include <cstdint>
#include <chrono>
#include <condition_variable>
#include "StudioOffsets.h"
namespace RBX {
class RunningAverage {
public:
double const lerp;
double lastSampleValue;
double averageValue;
double averageVariance;
unsigned char firstTime;
};
class Time {
public:
class Interval {
public:
double sec;
};
double sec;
};
class Timer {
public:
RBX::Time start;
};
class RunningAverageTimeInterval {
public:
class RBX::Timer timer;
unsigned char firstTime;
class RBX::RunningAverage average;
unsigned char *ignoreTimeSinceLastSample;
};
class RunningAverageDutyCycle {
public:
class RBX::RunningAverage time;
class RBX::RunningAverageTimeInterval interval;
};
class UnboundedCircularBuffer {
public:
uint64_t itemCapacity;
uint64_t read;
uint64_t itemCount;
uint8_t *buffer;
};
class AsyncTaskQueue {
public:
struct QueueStats {
uint64_t callCount;
double total;
double min;
double max;
double average;
};
std::mutex asyncTaskMutex;
uint32_t numAsyncWorkersRequested;
uint32_t numAsyncWorkersActive;
std::condition_variable asyncWorkerWakeupCond;
std::condition_variable asyncWorkerStoppedCond;
class RBX::UnboundedCircularBuffer queue;
struct RBX::AsyncTaskQueue::QueueStats executeTime;
};
struct CustomVector {
void *first; // RBX::TaskScheduler::Job *
void *__RefCounter____00;
void *last; // RBX::TaskScheduler::Job *
void *__RefCounter____01;
void *end; // RBX::TaskScheduler::Job *
void *__RefCounter____02;
};
struct TaskScheduler {
uint32_t cycleCounter;
bool cycleThrottling;
class RunningAverageDutyCycle schedulerDutyCycle;
class RBX::RunningAverage taskFrameTimeAverage;
double previousFrameTime;
class RBX::Timer stepTimer;
double maxFrameTime;
struct std::mutex globalMutex;
std::condition_variable workersWakeupCond;
class std::chrono::time_point<std::chrono::steady_clock, std::chrono::duration<__int64, std::ratio<1, 1000000000>>> nextCycleTimepoint;
class RBX::Time::Interval cycleInterval;
uint8_t backgroundMode;
class RBX::Time::Interval cycleIntervalToRestore;
char _170[0x10];
char _180[0x18];
struct RBX::CustomVector currentlyRunningJobs;
char _1C8[0x18];
char _1E0[0x20];
char _200[8];
void *taskQueue;// RBX::TaskQueue
void *___ref__count__taskqueue0001;
char _218[8];
char _220[0x10];
class RBX::AsyncTaskQueue asyncTaskQueue;
char _368[8];
char _370[8];
char _378[8];
char _380[8];
char _388[8];
char _390[8];
char _398[8];
char _3A0[8];
char _3A8[0x10];
char _3B8[8];
char _3C0[8];
char _3C8[8];
};
}