refactor of VtkCallbackCommand to be its' own class

This commit is contained in:
2024-05-03 15:23:34 +02:00
parent b83f49b4ad
commit da17aa5cfa
10 changed files with 142 additions and 20 deletions

View File

@@ -1,9 +1,23 @@
#include <vtkRenderWindow.h>
#include <vtkPointData.h>
#include <vtkDoubleArray.h>
#include <vtkGlyphSource2D.h>
#include <vtkRegularPolygonSource.h>
#include <vtkGlyph2D.h>
#include <vtkActor2D.h>
#include <vtkNamedColors.h>
#include <vtkPolyDataMapper2D.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkProperty2D.h>
#include <vtkVertexGlyphFilter.h>
#include <netcdf>
#include <vtkArrowSource.h>
#include <vtkNew.h>
#include <vtkCallbackCommand.h>
#include "Program.h"
#include "../commands/TimerCallbackCommand.h"
void Program::setWinProperties() {
this->win->SetWindowName("Simulation");
@@ -15,15 +29,8 @@ void Program::setWinProperties() {
}
void Program::CallbackFunction(vtkObject* caller, long unsigned int eventId, void* clientData, void* callData) {
((Program *)clientData)->lagrange->updateData(1);
((Program *)clientData)->win->Render();
}
void Program::setupTimer() {
vtkNew<vtkCallbackCommand> callback;
callback->SetCallback(this->CallbackFunction);
auto callback = vtkSmartPointer<TimerCallbackCommand>::New(this);
callback->SetClientData(this);
this->interact->AddObserver(vtkCommand::TimerEvent, callback);
this->interact->CreateRepeatingTimer(17); // 60 fps == 1000 / 60 == 16.7 ms per frame
@@ -67,6 +74,14 @@ void Program::setLagrange(Layer *l) {
// void Program::addInteractionStyle(vtkInteractorStyle style);
void Program::updateData(int t) {
this->win->Render();
this->lagrange->updateData(t);
this->euler->updateData(t);
}
void Program::render() {
this->win->Render();
this->interact->Start();