fix: had to chagne to pointers for the virtual function to override properly

This commit is contained in:
Djairo Hougee 2024-05-03 00:17:28 +02:00
parent ef1c78e0a5
commit b83f49b4ad
4 changed files with 19 additions and 22 deletions

View File

@ -57,7 +57,7 @@ void LGlyphLayer::spoofPoints() {
// returns new coords for a point; used to test the updateData function // returns new coords for a point; used to test the updateData function
std::pair<double, double> advect(int time, double lat, double lon) { std::pair<double, double> advect(int time, double lat, double lon) {
return {lat+1, lon+1} ; return {lat+0.001, lon+0.001} ;
} }

View File

@ -7,5 +7,4 @@ vtkSmartPointer<vtkRenderer> Layer::getLayer() {
} }
void Layer::updateData(int t) { void Layer::updateData(int t) {
cout << "wrong function dimwit" << endl;
} }

View File

@ -16,10 +16,8 @@ void Program::setWinProperties() {
} }
void Program::CallbackFunction(vtkObject* caller, long unsigned int eventId, void* clientData, void* callData) { void Program::CallbackFunction(vtkObject* caller, long unsigned int eventId, void* clientData, void* callData) {
cout << "timed" << endl; ((Program *)clientData)->lagrange->updateData(1);
((Program *)clientData)->lagrange.updateData(1); ((Program *)clientData)->win->Render();
//FIXME: from what i understand this should call the (overriden) updateData function in LGlyphLayer. It's not - and calls the virtual(?) updateData function in Layer instead, for some reason.
//Im too tired to comprehend this right now.
} }
@ -32,7 +30,7 @@ void Program::setupTimer() {
} }
Program::Program(Layer *bg, Layer *e, Layer *l) : background(*bg), euler(*e), lagrange(*l), win(), interact() { Program::Program(Layer *bg, Layer *e, Layer *l) : background(bg), euler(e), lagrange(l), win(), interact() {
this->win = vtkSmartPointer<vtkRenderWindow>::New(); this->win = vtkSmartPointer<vtkRenderWindow>::New();
this->interact = vtkSmartPointer<vtkRenderWindowInteractor>::New(); this->interact = vtkSmartPointer<vtkRenderWindowInteractor>::New();
@ -45,25 +43,25 @@ Program::Program(Layer *bg, Layer *e, Layer *l) : background(*bg), euler(*e), la
} }
void Program::setBackground(Layer bg) { void Program::setBackground(Layer *bg) {
this->win->RemoveRenderer(this->background.getLayer()); this->win->RemoveRenderer(this->background->getLayer());
this->background = bg; this->background = bg;
this->win->AddRenderer(bg.getLayer()); this->win->AddRenderer(bg->getLayer());
} }
void Program::setEuler(Layer e) { void Program::setEuler(Layer *e) {
this->win->RemoveRenderer(this->euler.getLayer()); this->win->RemoveRenderer(this->euler->getLayer());
this->euler = e; this->euler = e;
this->win->AddRenderer(e.getLayer()); this->win->AddRenderer(e->getLayer());
} }
void Program::setLagrange(Layer l) { void Program::setLagrange(Layer *l) {
this->win->RemoveRenderer(this->lagrange.getLayer()); this->win->RemoveRenderer(this->lagrange->getLayer());
this->lagrange = l; this->lagrange = l;
this->win->AddRenderer(l.getLayer()); this->win->AddRenderer(l->getLayer());
} }
// void Program::addInteractionStyle(vtkInteractorStyle style); // void Program::addInteractionStyle(vtkInteractorStyle style);

View File

@ -9,9 +9,9 @@
class Program { class Program {
private: private:
Layer background; Layer *background;
Layer euler; Layer *euler;
Layer lagrange; Layer *lagrange;
vtkSmartPointer<vtkRenderWindow> win; vtkSmartPointer<vtkRenderWindow> win;
vtkSmartPointer<vtkRenderWindowInteractor> interact; vtkSmartPointer<vtkRenderWindowInteractor> interact;
@ -22,9 +22,9 @@ private:
public: public:
Program(Layer *bg, Layer *e, Layer *l); Program(Layer *bg, Layer *e, Layer *l);
void setBackground(Layer bg); void setBackground(Layer *bg);
void setEuler(Layer e); void setEuler(Layer *e);
void setLagrange(Layer l); void setLagrange(Layer *l);
// void addInteractionStyle(vtkInteractorStyle style); // void addInteractionStyle(vtkInteractorStyle style);