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
|