= osrviewport
:revnumber: 2.0
:revdate: 2020/07/25



== OSRViewPort

The OSRViewPort allows you to create a movable, resizable ViewPort with the ability to control the camera's rotation and zoom features via mouse input.

To initialize the OSRViewPort you can call one of the 3 standard constructors as shown in the xref:gui/tonegodgui/quickstart.adoc[Quick Start Guide].

*Constructor 1:*

[source,java]
----

/** Parameters:
  * Screen screen,
  * String UID,
  * Vector2f position
  */

OSRViewPort vp = new OSRViewPort(screen, "vp", new Vector2f(15, 15));

----

*Constructor 2:*

[source,java]
----

/** Additional Parameter:
  * Vector2f dimensions  */

OSRViewPort vp = new OSRViewPort(screen, "vp", new Vector2f(15, 15),
    new Vector2f(150, 150)
);

----

*Constructor 3:*

[source,java]
----

/** Additional Parameters:
  * Vector4f resizeBorders,
  * String defaultImg
  */

OSRViewPort vp = new OSRViewPort(screen, "vp", new Vector2f(15, 15), new Vector2f(150, 150),
    new Vector4f(0,0,0,0),
    "imagePathToOverlayImage"
);

----

Once initialized, you will want to active the OSRBridge for off-screen rendering of your new scene:

[source,java]
----

vp.setOSRBridge(Node newScene, int renderWidth, int renderHeight);

----



=== The ViewPort’s Camera control methods:

[source,java]
----

vp.setUseCameraControlRotate(boolean rotateEnabled); // enable/disable rotation control
vp.setUseCameraControlZoom(boolean zoomEnabled); // enable/disable zoom control

vp.setCameraDistance(float distance);
vp.setCameraHorizonalRotation(float angleInRads);
vp.setCameraVerticalRotation(float angleInRads);
vp.setCameraMinDistance(float distance);
vp.setCameraMaxDistance(float distance);
vp.setCameraMinVerticalRotation(float angleInRads);
vp.setCameraMaxVerticalRotation(float angleInRads);

----


=== Other methods:

[source,java]
----

vp.setBackgroundColor(ColorRGBA color); // ViewPort is transparent by default

----
