diff --git a/src/main/scala/ocelot/desktop/graphics/Viewport3D.scala b/src/main/scala/ocelot/desktop/graphics/Viewport3D.scala index 482ea87..dc819a6 100644 --- a/src/main/scala/ocelot/desktop/graphics/Viewport3D.scala +++ b/src/main/scala/ocelot/desktop/graphics/Viewport3D.scala @@ -8,7 +8,7 @@ import org.lwjgl.opengl.{ARBFramebufferObject, GL11, GL21, GL30} import scala.collection.mutable -class Viewport3D(val width: Int, var height: Int) extends Resource with Logging { +class Viewport3D(width: Int, height: Int) extends Resource with Logging { private[graphics] val textureColor = new Texture(width, height, GL21.GL_SRGB8, GL11.GL_UNSIGNED_BYTE, GL11.GL_RGB) private val textureDepth = new Texture(width, height, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT) diff --git a/src/main/scala/ocelot/desktop/ui/widget/Viewport3DWidget.scala b/src/main/scala/ocelot/desktop/ui/widget/Viewport3DWidget.scala index 3d539bc..3d9f3c9 100644 --- a/src/main/scala/ocelot/desktop/ui/widget/Viewport3DWidget.scala +++ b/src/main/scala/ocelot/desktop/ui/widget/Viewport3DWidget.scala @@ -27,7 +27,11 @@ abstract class Viewport3DWidget extends Widget with DragHandler with HoverHandle protected def createScene(): Scene3D - private lazy val viewport = new Viewport3D(600, 400) + // XXX: the viewport's dimensions must be kept outside the viewport object itself: see #121 + private val viewportWidth = 600 + private val viewportHeight = 400 + + private lazy val viewport = new Viewport3D(viewportWidth, viewportHeight) private var viewportDisposed = false // extra safety protected val camera: Camera3D = new Camera3D() @@ -55,14 +59,14 @@ abstract class Viewport3DWidget extends Widget with DragHandler with HoverHandle override protected val layout: Layout = new CopyLayout(this) - override def minimumSize: Size2D = Size2D(viewport.width + 4, viewport.height + 4) + override def minimumSize: Size2D = Size2D(viewportWidth + 4, viewportHeight + 4) - override def maximumSize: Size2D = Size2D(viewport.width + 4, viewport.height + 4) + override def maximumSize: Size2D = Size2D(viewportWidth + 4, viewportHeight + 4) children :+= new PaddingBox(new Widget { - override def minimumSize: Size2D = Size2D(viewport.width, viewport.height) + override def minimumSize: Size2D = Size2D(viewportWidth, viewportHeight) - override def maximumSize: Size2D = Size2D(viewport.width, viewport.height) + override def maximumSize: Size2D = Size2D(viewportWidth, viewportHeight) override def draw(g: Graphics): Unit = { DrawUtils.panel(g, bounds.x - 2, bounds.y - 2, bounds.w + 4, bounds.h + 4)