# Inverse of JMEDesktop.convert() method?

Hi,

I was wondering how one would go about implementing the inverse of the JMEDesktop.convert() method?  I want to convert from Swing to JME screen coordinates.  I've figured out how to do the inverse of the part for getRenderQueueMode() == Renderer.QUEUE_ORTHO, but the else logic is a much more complex:

/**

* Convert mouse coordinates from jME screen to MyJMEDesktop coordinates (Swing).

* @param x jME x coordinate

* @param y jME y coordinate

* @param store resulting JDesktop coordinates

*/

public void convert( int x, int y, Vector2f store ) {

if ( getRenderQueueMode() == Renderer.QUEUE_ORTHO ) {

//TODO: occlusion by other quads (JMEFrames)

x = (int) ( x - getWorldTranslation().x + desktopWidth / 2 );

y = (int) ( desktopHeight / 2 - ( y - getWorldTranslation().y ) );

}

else {

store.set( x, y );

DisplaySystem.getDisplaySystem().getWorldCoordinates( store, 0, pickRay.origin );

DisplaySystem.getDisplaySystem().getWorldCoordinates( store, 0.3f, pickRay.direction ).subtractLocal( pickRay.origin ).normalizeLocal();

applyWorld( bottomLeft.set( -width * 0.5f, -height * 0.5f, 0 ) );

applyWorld( topLeft.set( -width * 0.5f, height * 0.5f, 0 ) );

applyWorld( topRight.set( width * 0.5f, height * 0.5f, 0 ) );

applyWorld( bottomRight.set( width * 0.5f, -height * 0.5f, 0 ) );

if ( pickRay.intersectWherePlanarQuad( topLeft, topRight, bottomLeft, tuv ) ) {

x = (int) ( ( tuv.y - 0.5f ) * width ) + desktopWidth / 2;

y = (int) ( ( tuv.z - 0.5f ) * height ) + desktopHeight / 2;

}

Does anyone have any examples or rough outlines on how to do something like this?

Thanks!