leviathan-2.0

This commit is contained in:
2025-06-15 10:24:37 +03:00
parent 957a823d24
commit 076ee0be68
29 changed files with 16509 additions and 1 deletions

46
src/editor.h Normal file
View File

@ -0,0 +1,46 @@
namespace Leviathan
{
// forward declaration
class Song;
}
namespace Leviathan
{
// simpler wrapper class for the editor functionality
class Editor
{
public:
Editor();
void beginFrame(const unsigned long time);
void endFrame(const unsigned long time);
void printFrameStatistics();
double handleEvents(Song* track, double position);
void updateShaders(int* mainShaderPID, int* postShaderPID, bool force_update = false);
private:
int reloadShaderSource(const char* filename);
bool compileAndDebugShader(const char* shader, const char* filename, bool kill_on_failure = true);
enum PlayState {Playing, Paused};
PlayState state;
unsigned long lastFrameStart;
unsigned long lastFrameStop;
static const int shaderErrorBufferLength = 4096;
static const int windowSize = 10;
int timeHistory[windowSize] = {};
bool shaderUpdatePending = false;
int previousUpdateTime;
double trackPosition;
double trackEnd;
};
}