Class: EaseEngine::Frame

Inherits:
Object
  • Object
show all
Defined in:
lib/ease_engine/frame.rb

Constant Summary collapse

@@fps =
0
@@measure =
EaseEngine::Measure.new
@@offset_usec =

sleep が意図した時間分 sleep するとは限らないので、遅延分を次の sleep 時間から引くためのオフセット値

0

Class Method Summary collapse

Class Method Details

.fpsObject



13
14
15
# File 'lib/ease_engine/frame.rb', line 13

def self.fps
  @@fps
end

.fps=(fps) ⇒ Object



9
10
11
# File 'lib/ease_engine/frame.rb', line 9

def self.fps=( fps )
  @@fps = fps
end

.update(&block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ease_engine/frame.rb', line 17

def self.update( &block )
  if 0 == @@fps
    block.call( 0, 0.0 )
  else
    @@measure.check
    sleep_time_usec = 1000000 / @@fps - @@measure.update_usec + @@offset_usec
    sleep_time_usec = 0 if sleep_time_usec < 0
    
    @@measure.start
    @@offset_usec = sleep_time_usec
    begin
      measure = EaseEngine::Measure.new
      sleep_time_f = sleep_time_usec.to_f / 1000000
      block.call( sleep_time_usec, sleep_time_f )
      sleep_time_usec -= measure.check
    end while 0 < sleep_time_usec
    @@offset_usec -= @@measure.check
    @@measure.start
  end
end