Fixed bug with resizing 3DScene
This commit is contained in:
parent
254e311593
commit
c52f51b1e4
@ -400,6 +400,10 @@ sub mouse_event {
|
|||||||
$self->Refresh;
|
$self->Refresh;
|
||||||
$self->Update;
|
$self->Update;
|
||||||
} else {
|
} else {
|
||||||
|
# The mouse_to_3d gets the Z coordinate from the Z buffer at the screen coordinate $pos->x,y,
|
||||||
|
# an converts the screen space coordinate to unscaled object space.
|
||||||
|
my $pos3d = ($volume_idx == -1) ? undef : $self->mouse_to_3d(@$pos);
|
||||||
|
|
||||||
# Select volume in this 3D canvas.
|
# Select volume in this 3D canvas.
|
||||||
# Don't deselect a volume if layer editing is enabled. We want the object to stay selected
|
# Don't deselect a volume if layer editing is enabled. We want the object to stay selected
|
||||||
# during the scene manipulation.
|
# during the scene manipulation.
|
||||||
@ -427,9 +431,6 @@ sub mouse_event {
|
|||||||
|
|
||||||
if ($volume_idx != -1) {
|
if ($volume_idx != -1) {
|
||||||
if ($e->LeftDown && $self->enable_moving) {
|
if ($e->LeftDown && $self->enable_moving) {
|
||||||
# The mouse_to_3d gets the Z coordinate from the Z buffer at the screen coordinate $pos->x,y,
|
|
||||||
# an converts the screen space coordinate to unscaled object space.
|
|
||||||
my $pos3d = $self->mouse_to_3d(@$pos);
|
|
||||||
# Only accept the initial position, if it is inside the volume bounding box.
|
# Only accept the initial position, if it is inside the volume bounding box.
|
||||||
my $volume_bbox = $self->volumes->[$volume_idx]->transformed_bounding_box;
|
my $volume_bbox = $self->volumes->[$volume_idx]->transformed_bounding_box;
|
||||||
$volume_bbox->offset(1.);
|
$volume_bbox->offset(1.);
|
||||||
@ -948,6 +949,9 @@ sub mulquats {
|
|||||||
sub mouse_to_3d {
|
sub mouse_to_3d {
|
||||||
my ($self, $x, $y, $z) = @_;
|
my ($self, $x, $y, $z) = @_;
|
||||||
|
|
||||||
|
return unless $self->GetContext;
|
||||||
|
$self->SetCurrent($self->GetContext);
|
||||||
|
|
||||||
my @viewport = glGetIntegerv_p(GL_VIEWPORT); # 4 items
|
my @viewport = glGetIntegerv_p(GL_VIEWPORT); # 4 items
|
||||||
my @mview = glGetDoublev_p(GL_MODELVIEW_MATRIX); # 16 items
|
my @mview = glGetDoublev_p(GL_MODELVIEW_MATRIX); # 16 items
|
||||||
my @proj = glGetDoublev_p(GL_PROJECTION_MATRIX); # 16 items
|
my @proj = glGetDoublev_p(GL_PROJECTION_MATRIX); # 16 items
|
||||||
|
Loading…
Reference in New Issue
Block a user