diff options
author | marynate <mary.w.nate@gmail.com> | 2014-02-19 23:35:39 +0800 |
---|---|---|
committer | marynate <mary.w.nate@gmail.com> | 2014-03-18 18:00:18 +0800 |
commit | c0547f5691c9293f82f6713d18b344524146441a (patch) | |
tree | b9af649946085f4e6f900fcf525dc2ec725a35a3 /core | |
parent | e20e3c9525c2f0d5bb95e85138a8d88a0088d439 (diff) |
Add possibility to limit frame to main loop (application/target_fps)
target-fps working, and use fixed physics step before adding physics-fps in project setting
Complete implementation of framelimit
Conflicts:
main/main.cpp
Diffstat (limited to 'core')
-rw-r--r-- | core/bind/core_bind.cpp | 10 | ||||
-rw-r--r-- | core/bind/core_bind.h | 3 | ||||
-rw-r--r-- | core/os/os.cpp | 9 | ||||
-rw-r--r-- | core/os/os.h | 5 |
4 files changed, 27 insertions, 0 deletions
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 28906354ab..1b4ca8151b 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -199,6 +199,14 @@ int _OS::get_iterations_per_second() const { } +void _OS::set_target_fps(int p_fps) { + OS::get_singleton()->set_target_fps(p_fps); +} + +float _OS::get_target_fps() const { + return OS::get_singleton()->get_target_fps(); +} + void _OS::set_low_processor_usage_mode(bool p_enabled) { OS::get_singleton()->set_low_processor_usage_mode(p_enabled); @@ -537,6 +545,8 @@ void _OS::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_iterations_per_second","iterations_per_second"),&_OS::set_iterations_per_second); ObjectTypeDB::bind_method(_MD("get_iterations_per_second"),&_OS::get_iterations_per_second); + ObjectTypeDB::bind_method(_MD("set_target_fps","target_fps"),&_OS::set_target_fps); + ObjectTypeDB::bind_method(_MD("get_target_fps"),&_OS::get_target_fps); ObjectTypeDB::bind_method(_MD("has_touchscreen_ui_hint"),&_OS::has_touchscreen_ui_hint); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index 0c80fb3fc4..3d03247c07 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -106,6 +106,9 @@ public: void set_iterations_per_second(int p_ips); int get_iterations_per_second() const; + void set_target_fps(int p_fps); + float get_target_fps() const; + void set_low_processor_usage_mode(bool p_enabled); bool is_in_low_processor_usage_mode() const; diff --git a/core/os/os.cpp b/core/os/os.cpp index c9a5cb1af8..f678d38f56 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -92,6 +92,14 @@ int OS::get_iterations_per_second() const { return ips; } +void OS::set_target_fps(int p_fps) { + _target_fps=p_fps>0? p_fps : 0; +} + +float OS::get_target_fps() const { + return _target_fps; +} + void OS::set_low_processor_usage_mode(bool p_enabled) { low_processor_usage_mode=p_enabled; @@ -474,6 +482,7 @@ OS::OS() { _exit_code=0; _orientation=SCREEN_LANDSCAPE; _fps=1; + _target_fps=0; _render_thread_mode=RENDER_THREAD_SAFE; Math::seed(1234567); } diff --git a/core/os/os.h b/core/os/os.h index c790b38635..b41bf6ce73 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -54,6 +54,7 @@ class OS { int _exit_code; int _orientation; float _fps; + int _target_fps; char *last_error; @@ -149,8 +150,12 @@ public: virtual void set_iterations_per_second(int p_ips); virtual int get_iterations_per_second() const; + virtual void set_target_fps(int p_fps); + virtual float get_target_fps() const; + virtual float get_frames_per_second() const { return _fps; }; + virtual void set_low_processor_usage_mode(bool p_enabled); virtual bool is_in_low_processor_usage_mode() const; |