File tree Expand file tree Collapse file tree 3 files changed +28
-0
lines changed Expand file tree Collapse file tree 3 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ ProjectScene {
77 property string fileName
88 property int stageWidth: 480
99 property int stageHeight: 360
10+ property alias fps: loader .fps
1011
1112 id: root
1213 width: stageWidth
Original file line number Diff line number Diff line change @@ -58,6 +58,9 @@ void ProjectLoader::setFileName(const QString &newFileName)
5858 m_project.setFileName (m_fileName.toStdString ());
5959 m_loaded = m_project.load ();
6060 m_engine = m_project.engine ().get ();
61+
62+ m_engine->setFps (m_fps);
63+
6164 auto handler = std::bind (&ProjectLoader::emitTick, this );
6265 m_engine->setRedrawHandler (std::function<void ()>(handler));
6366
@@ -160,3 +163,21 @@ void ProjectLoader::emitTick()
160163 renderedTarget->loadProperties ();
161164 }
162165}
166+
167+ double ProjectLoader::fps () const
168+ {
169+ return m_fps;
170+ }
171+
172+ void ProjectLoader::setFps (double newFps)
173+ {
174+ if (qFuzzyCompare (m_fps, newFps))
175+ return ;
176+
177+ m_fps = newFps;
178+
179+ if (m_engine)
180+ m_engine->setFps (m_fps);
181+
182+ emit fpsChanged ();
183+ }
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ class ProjectLoader : public QObject
2323 Q_PROPERTY (libscratchcpp::IEngine *engine READ engine NOTIFY engineChanged)
2424 Q_PROPERTY (StageModel *stage READ stage NOTIFY stageChanged)
2525 Q_PROPERTY (QQmlListProperty<SpriteModel> sprites READ sprites NOTIFY spritesChanged)
26+ Q_PROPERTY (double fps READ fps WRITE setFps NOTIFY fpsChanged)
2627
2728 public:
2829 explicit ProjectLoader (QObject *parent = nullptr );
@@ -45,12 +46,16 @@ class ProjectLoader : public QObject
4546 unsigned int frameFinished () const ;
4647 void setFrameFinished (unsigned int newFrameFinished);
4748
49+ double fps () const ;
50+ void setFps (double newFps);
51+
4852 signals:
4953 void fileNameChanged ();
5054 void loadedChanged ();
5155 void engineChanged ();
5256 void stageChanged ();
5357 void spritesChanged ();
58+ void fpsChanged ();
5459
5560 protected:
5661 void timerEvent (QTimerEvent *event) override ;
@@ -67,6 +72,7 @@ class ProjectLoader : public QObject
6772 StageModel m_stage;
6873 QList<SpriteModel *> m_sprites;
6974 QFuture<void > m_eventLoop;
75+ double m_fps = 30 ;
7076};
7177
7278} // namespace scratchcppgui
You can’t perform that action at this time.
0 commit comments