Skip to content

Commit 725bd50

Browse files
committed
Add fps property
1 parent 6236266 commit 725bd50

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

ScratchCPPGui/ProjectPlayer.qml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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

ScratchCPPGui/projectloader.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff 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+
}

ScratchCPPGui/projectloader.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)