47 lines
961 B
C++
47 lines
961 B
C++
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;
|
|
};
|
|
}
|