@@ -206,8 +206,11 @@ namespace SCIRun {
206206 // ----------------------------------------------------------------------------------------------
207207 void SRInterface::inputMouseWheel (int32_t delta)
208208 {
209- mCamera ->mouseWheelEvent (delta, mZoomSpeed );
210- updateCamera ();
209+ if (!widgetSelected_)
210+ {
211+ mCamera ->mouseWheelEvent (delta, mZoomSpeed );
212+ updateCamera ();
213+ }
211214 }
212215
213216 // ----------------------------------------------------------------------------------------------
@@ -603,18 +606,20 @@ namespace SCIRun {
603606 {
604607 gen::StaticCamera* cam = mCore .getStaticComponent <gen::StaticCamera>();
605608 glm::vec4 spos ((float (2 * pos.x ) - float (mScreenWidth )) / float (mScreenWidth ),
606- (float (mScreenHeight ) - float (2 * pos.y )) / float (mScreenHeight ),
607- mSelectedPos .z , 1 .0f );
609+ (float (mScreenHeight ) - float (2 * pos.y )) / float (mScreenHeight ),
610+ mSelectedPos .z , 1 .0f );
611+
612+ float ssDepth = mSelectedPos .z * 0.5 + 0.5 ;
613+ float zFar = mCamera ->getZFar ();
614+ float zNear = mCamera ->getZNear ();
615+ float vDepth = 1.0 /(ssDepth * (1.0 /zFar - 1.0 /zNear) + 1.0 /zNear);
608616
617+ glm::vec4 transVec = glm::vec4 (glm::vec3 (spos - mSelectedPos ) * glm::vec3 (vDepth , vDepth, 1.0 ), 0 .0f );
609618 mWidgetTransform = gen::Transform ();
610- mWidgetTransform .setPosition ((spos - mSelectedPos ).xyz ());
611- mWidgetTransform .transform = glm::inverse (cam->data .projIV ) *
612- mWidgetTransform .transform * cam->data .projIV ;
613-
614- spire::CerealHeap<gen::Transform>* contTrans =
615- mCore .getOrCreateComponentContainer <gen::Transform>();
616- std::pair<const gen::Transform*, size_t > component =
617- contTrans->getComponent (mSelectedID );
619+ mWidgetTransform .setPosition ((glm::inverse (cam->data .projIV ) * transVec).xyz ());
620+
621+ spire::CerealHeap<gen::Transform>* contTrans = mCore .getOrCreateComponentContainer <gen::Transform>();
622+ std::pair<const gen::Transform*, size_t > component = contTrans->getComponent (mSelectedID );
618623
619624 if (component.first != nullptr )
620625 contTrans->modifyIndex (mWidgetTransform , component.second , 0 );
0 commit comments