… | |
… | |
3589 | |
3589 | |
3590 | if (my $anim = $::CONN->{anim}[$self->{anim}]) { |
3590 | if (my $anim = $::CONN->{anim}[$self->{anim}]) { |
3591 | if ($anim && @$anim) { |
3591 | if ($anim && @$anim) { |
3592 | delete $self->{wait_face}; |
3592 | delete $self->{wait_face}; |
3593 | $self->{face} = $anim->[ $self->{frame} % @$anim ]; |
3593 | $self->{face} = $anim->[ $self->{frame} % @$anim ]; |
3594 | $self->{tex} = $::CONN->{texture}[ $::CONN->{faceid}[$self->{face}] ]; |
3594 | if (my $tex = $self->{tex} = $::CONN->{texture}[ $::CONN->{faceid}[$self->{face}] ]) { |
|
|
3595 | unless ($tex->{name} || $tex->{loading}) { |
|
|
3596 | $tex->upload; |
|
|
3597 | } |
|
|
3598 | } |
3595 | } |
3599 | } |
3596 | } |
3600 | } |
3597 | } |
3601 | } |
3598 | |
3602 | |
3599 | sub size_request { |
3603 | sub size_request { |
3600 | my ($self) = @_; |
3604 | my ($self) = @_; |
3601 | |
3605 | |
3602 | if ($::CONN) { |
3606 | if ($::CONN) { |
3603 | if (my $faceid = $::CONN->{faceid}[$self->{face}]) { |
3607 | if (my $faceid = $::CONN->{faceid}[$self->{face}]) { |
3604 | if (my $tex = $::CONN->{texture}[$faceid]) { |
3608 | if (my $tex = $self->{tex} = $::CONN->{texture}[$faceid]) { |
3605 | $self->{tex} = $tex; |
3609 | if ($tex->{name}) { |
3606 | return ($self->{size_w} || $tex->{w}, $self->{size_h} || $tex->{h}); |
3610 | return ($self->{size_w} || $tex->{w}, $self->{size_h} || $tex->{h}); |
|
|
3611 | } elsif (!$tex->{loading}) { |
|
|
3612 | $tex->upload; |
|
|
3613 | } |
3607 | } else { |
3614 | } else { |
3608 | $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub { |
3615 | $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub { |
3609 | $self->realloc; |
3616 | $self->realloc; |
3610 | }); |
3617 | }); |
3611 | } |
3618 | } |