… | |
… | |
1100 | } |
1100 | } |
1101 | |
1101 | |
1102 | sub update_slider { |
1102 | sub update_slider { |
1103 | my ($self) = @_; |
1103 | my ($self) = @_; |
1104 | |
1104 | |
|
|
1105 | my $child = ($self->{vp} or return)->child; |
|
|
1106 | |
1105 | my ($w1, $w2) = ($self->{vp}->child->{w}, $self->{vp}{w}); |
1107 | my ($w1, $w2) = ($child->{w}, $self->{vp}{w}); |
1106 | $self->{hslider}->set_range ([$self->{hslider}{range}[0], 0, $w1, $w2, 1]); |
1108 | $self->{hslider}->set_range ([$self->{hslider}{range}[0], 0, $w1, $w2, 1]); |
1107 | #$self->{hslider}->set_visibility ($w1 != $w2); |
1109 | #$self->{hslider}->set_visibility ($w1 != $w2); |
1108 | |
1110 | |
1109 | my ($h1, $h2) = ($self->{vp}->child->{h}, $self->{vp}{h}); |
1111 | my ($h1, $h2) = ($child->{h}, $self->{vp}{h}); |
1110 | $self->{vslider}->set_range ([$self->{vslider}{range}[0], 0, $h1, $h2, 1]); |
1112 | $self->{vslider}->set_range ([$self->{vslider}{range}[0], 0, $h1, $h2, 1]); |
1111 | #$self->{vslider}->set_visibility ($h1 != $h2); |
1113 | #$self->{vslider}->set_visibility ($h1 != $h2); |
1112 | } |
1114 | } |
1113 | |
1115 | |
1114 | sub update { |
1116 | sub update { |
… | |
… | |
3332 | $self->{timer} = Event->timer ( |
3334 | $self->{timer} = Event->timer ( |
3333 | at => $self->{animspeed} * int $::NOW / $self->{animspeed}, |
3335 | at => $self->{animspeed} * int $::NOW / $self->{animspeed}, |
3334 | hard => 1, |
3336 | hard => 1, |
3335 | interval => $self->{animspeed}, |
3337 | interval => $self->{animspeed}, |
3336 | cb => sub { |
3338 | cb => sub { |
|
|
3339 | delete $self->{wait_face}; |
3337 | ++$widget->{frame}; |
3340 | ++$widget->{frame}; |
3338 | $widget->update; |
3341 | $widget->update; |
3339 | }, |
3342 | }, |
3340 | ); |
3343 | ); |
3341 | } |
3344 | } |
… | |
… | |
3368 | my $anim = $::CONN->{anim}[$self->{anim}]; |
3371 | my $anim = $::CONN->{anim}[$self->{anim}]; |
3369 | |
3372 | |
3370 | $face = $anim->[ $self->{frame} % @$anim ] |
3373 | $face = $anim->[ $self->{frame} % @$anim ] |
3371 | if $anim && @$anim; |
3374 | if $anim && @$anim; |
3372 | } |
3375 | } |
|
|
3376 | |
|
|
3377 | my $faceid = $::CONN->{faceid}[$face || $self->{face}] |
|
|
3378 | or return; |
3373 | |
3379 | |
3374 | my $tex = $::CONN->{texture}[$::CONN->{faceid}[$face || $self->{face}]]; |
3380 | my $tex = $::CONN->{texture}[$faceid]; |
3375 | |
3381 | |
3376 | if ($tex) { |
3382 | if ($tex) { |
3377 | glEnable GL_TEXTURE_2D; |
3383 | glEnable GL_TEXTURE_2D; |
3378 | glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; |
3384 | glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; |
3379 | glColor 0, 0, 0, 1; |
3385 | glColor 0, 0, 0, 1; |
3380 | $tex->draw_quad_alpha (0, 0, $self->{w}, $self->{h}); |
3386 | $tex->draw_quad_alpha (0, 0, $self->{w}, $self->{h}); |
3381 | glDisable GL_TEXTURE_2D; |
3387 | glDisable GL_TEXTURE_2D; |
|
|
3388 | } else { |
|
|
3389 | $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub { |
|
|
3390 | $self->update; |
|
|
3391 | }); |
3382 | } |
3392 | } |
3383 | } |
3393 | } |
3384 | |
3394 | |
3385 | sub destroy { |
3395 | sub destroy { |
3386 | my ($self) = @_; |
3396 | my ($self) = @_; |