1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
// Copyright 2015 - 2025, GIBIS-UNIFESP and the wiRedPanda contributors
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include "elementmapping.h"
#include <QGraphicsItem>
#include <QObject>
#include <QTimer>
#include <memory>
class QNEConnection;
class QNEInputPort;
class QNEOutputPort;
class Scene;
class Simulation : public QObject
{
Q_OBJECT
public:
explicit Simulation(Scene *scene);
~Simulation() override = default;
bool initialize();
bool isRunning();
void restart();
void start();
void stop();
void update();
private:
Q_DISABLE_COPY(Simulation)
static void updatePort(QNEInputPort *port);
static void updatePort(QNEOutputPort *port);
void updateWithIterativeSettling();
QTimer m_timer;
QVector<Clock *> m_clocks;
QVector<GraphicElement *> m_outputs;
QVector<GraphicElementInput *> m_inputs;
QVector<QNEConnection *> m_connections;
Scene *m_scene;
bool m_initialized = false;
std::unique_ptr<ElementMapping> m_elmMapping;
};
|