mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-05 05:07:48 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "RbxFormat.h" // for RBX_PRINTF_ATTR
|
||||
|
||||
#if defined(_WIN32) || defined(__APPLE__) || defined(__ANDROID__)
|
||||
#define RBXPROFILER
|
||||
#endif
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
namespace Profiler
|
||||
{
|
||||
typedef uint64_t Token;
|
||||
|
||||
Token getToken(const char* group, const char* name, int color = -1);
|
||||
Token getLabelToken(const char* group);
|
||||
Token getCounterToken(const char* name);
|
||||
|
||||
uint64_t enterRegion(Token token);
|
||||
void leaveRegion(Token token, uint64_t enterTimestamp);
|
||||
|
||||
void addLabel(Token token, const char* name);
|
||||
RBX_PRINTF_ATTR(2, 3) void addLabelFormat(Token token, const char* name, ...);
|
||||
|
||||
void counterAdd(Token token, long long count);
|
||||
void counterSet(Token token, long long count);
|
||||
|
||||
void onThreadCreate(const char* name);
|
||||
void onThreadExit();
|
||||
|
||||
void onFrame();
|
||||
|
||||
enum Flags
|
||||
{
|
||||
Flag_MouseMove = 1 << 0,
|
||||
Flag_MouseWheel = 1 << 1,
|
||||
Flag_MouseDown = 1 << 2,
|
||||
Flag_MouseUp = 1 << 3,
|
||||
};
|
||||
|
||||
void gpuInit(void* context);
|
||||
void gpuShutdown();
|
||||
|
||||
bool isCapturingMouseInput();
|
||||
bool handleMouse(unsigned int flags, int mouseX, int mouseY, int mouseWheel, int mouseButton);
|
||||
|
||||
bool toggleVisible();
|
||||
bool togglePause();
|
||||
|
||||
struct Renderer
|
||||
{
|
||||
virtual ~Renderer() {}
|
||||
|
||||
virtual void drawText(int x, int y, unsigned int color, const char* text, unsigned int length, unsigned int textWidth, unsigned int textHeight) = 0;
|
||||
virtual void drawBox(int x0, int y0, int x1, int y1, unsigned int color0, unsigned int color1) = 0;
|
||||
virtual void drawLine(unsigned int vertexCount, const float* vertexData, unsigned int color) = 0;
|
||||
};
|
||||
|
||||
bool isVisible();
|
||||
void render(Renderer* renderer, unsigned int width, unsigned int height);
|
||||
|
||||
struct Scope
|
||||
{
|
||||
Token token;
|
||||
uint64_t timestamp;
|
||||
|
||||
Scope(Token token): token(token)
|
||||
{
|
||||
timestamp = enterRegion(token);
|
||||
}
|
||||
|
||||
~Scope()
|
||||
{
|
||||
leaveRegion(token, timestamp);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#define RBXPROFILER_TOKEN_PASTE0(a, b) a ## b
|
||||
#define RBXPROFILER_TOKEN_PASTE(a, b) RBXPROFILER_TOKEN_PASTE0(a,b)
|
||||
|
||||
#ifdef RBXPROFILER
|
||||
#define RBXPROFILER_SCOPE(group, name, ...) static ::RBX::Profiler::Token RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__) = ::RBX::Profiler::getToken(group "", name "", ## __VA_ARGS__); ::RBX::Profiler::Scope RBXPROFILER_TOKEN_PASTE(profscope, __LINE__)(RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__))
|
||||
#define RBXPROFILER_LABEL(group, label) static ::RBX::Profiler::Token RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__) = ::RBX::Profiler::getLabelToken(group ""); ::RBX::Profiler::addLabel(RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__), label)
|
||||
#define RBXPROFILER_LABELF(group, label, ...) static ::RBX::Profiler::Token RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__) = ::RBX::Profiler::getLabelToken(group ""); ::RBX::Profiler::addLabelFormat(RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__), label, ## __VA_ARGS__)
|
||||
#define RBXPROFILER_COUNTER_ADD(name, count) static ::RBX::Profiler::Token RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__) = ::RBX::Profiler::getCounterToken(name ""); ::RBX::Profiler::counterAdd(RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__), static_cast<long long>(count))
|
||||
#define RBXPROFILER_COUNTER_SUB(name, count) static ::RBX::Profiler::Token RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__) = ::RBX::Profiler::getCounterToken(name ""); ::RBX::Profiler::counterAdd(RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__), -static_cast<long long>(count))
|
||||
#define RBXPROFILER_COUNTER_SET(name, count) static ::RBX::Profiler::Token RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__) = ::RBX::Profiler::getCounterToken(name ""); ::RBX::Profiler::counterSet(RBXPROFILER_TOKEN_PASTE(proftoken, __LINE__), count)
|
||||
#else
|
||||
#define RBXPROFILER_SCOPE(group, name, ...) (void)0
|
||||
#define RBXPROFILER_LABEL(group, label) (void)0
|
||||
#define RBXPROFILER_LABELF(group, label, ...) (void)sizeof(0, __VA_ARGS__)
|
||||
#define RBXPROFILER_COUNTER_ADD(name, count) (void)0
|
||||
#define RBXPROFILER_COUNTER_SUB(name, count) (void)0
|
||||
#define RBXPROFILER_COUNTER_SET(name, count) (void)0
|
||||
#endif
|
||||
Reference in New Issue
Block a user