Merge pull request #16 from MakeNEnjoy/djairo-vtk-pause

Djairo vtk pause
This commit is contained in:
Robin Sachsenweger Ballantyne 2024-05-06 11:14:03 +02:00 committed by GitHub
commit 67fcfa1cdc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 17 additions and 3 deletions

View File

@ -37,6 +37,7 @@ void Program::setupTimer() {
auto callback = vtkSmartPointer<TimerCallbackCommand>::New(this);
callback->SetClientData(this);
this->interact->AddObserver(vtkCommand::TimerEvent, callback);
this->interact->AddObserver(vtkCommand::KeyPressEvent, callback);
this->interact->CreateRepeatingTimer(17); // 60 fps == 1000 / 60 == 16.7 ms per frame
}

View File

@ -50,8 +50,7 @@ void SpawnPointCallback::Execute(vtkObject *caller, unsigned long evId, void *ca
vtkSmartPointer<vtkCellArray> vertices = vtkSmartPointer<vtkCellArray>::New();
vertices->InsertNextCell(vertex);
data->SetVerts(vertices);
// data->Modified(); // These might be needed im not sure.
// ren->GetRenderWindow()->Render();
ren->GetRenderWindow()->Render();
}

View File

@ -7,10 +7,16 @@ TimerCallbackCommand::TimerCallbackCommand() : dt(3600), maxTime(3600*24*365), t
TimerCallbackCommand* TimerCallbackCommand::New(Program *program) {
TimerCallbackCommand *cb = new TimerCallbackCommand();
cb->setProgram(program);
cb->setPaused(false);
return cb;
}
void TimerCallbackCommand::Execute(vtkObject* caller, unsigned long eventId, void* vtkNotUsed(callData)) {
auto intr = reinterpret_cast<vtkRenderWindowInteractor *>(caller);
if (eventId == vtkCommand::KeyPressEvent and not strcmp("space", intr->GetKeySym())) {
this->paused = ! this->paused;
} else if (eventId == vtkCommand::TimerEvent and not this->paused) {
this->time += this->dt;
if (this->time >= this->maxTime) {
@ -21,8 +27,14 @@ void TimerCallbackCommand::Execute(vtkObject* caller, unsigned long eventId, voi
this->program->updateData(this->time);
}
}
void TimerCallbackCommand::setProgram(Program *program) {
this->program = program;
}
void TimerCallbackCommand::setPaused(const bool val) {
this->paused = val;
}

View File

@ -11,11 +11,13 @@ public:
void Execute(vtkObject* caller, unsigned long eventId, void* vtkNotUsed(callData)) override;
void setProgram(Program *program);
void setPaused(const bool val);
private:
int time;
int dt;
int maxTime;
bool paused;
Program *program;
};