libevent: rename `bind_to` to the more precise `bind_tcp`
[nit.git] / lib / gamnit / cameras.nit
index 7183e6b..33aac41 100644 (file)
@@ -207,8 +207,8 @@ class UICamera
        # Clipping wall the farthest of the camera, defaults to -100.0
        var far: Float = -100.0 is writable
 
-       # Width in world units, defaults to the width in pixels of the screen
-       var width: Float = display.width.to_f is lazy
+       # Width in world units, calculated from `height` and the screen aspect ratio
+       fun width: Float do return height * display.aspect_ratio
 
        # Height in world units, defaults to 1080.0
        #
@@ -221,20 +221,18 @@ class UICamera
        fun reset_height(height: nullable Float)
        do
                if height == null then height = display.height.to_f
-
                self.height = height
-               self.width = height * display.aspect_ratio
        end
 
        # Convert the position `x, y` on screen, to UI coordinates
-       fun camera_to_ui(x, y: Numeric): Point[Float]
+       fun camera_to_ui(x, y: Numeric): Point3d[Float]
        do
                # FIXME this kind of method should use something like a canvas
                # instead of being hard coded on the display.
 
                var wx = x.to_f * width / display.width.to_f - position.x
                var wy = y.to_f * height / display.height.to_f - position.y
-               return new Point[Float](wx, -wy)
+               return new Point3d[Float](wx, -wy, 0.0)
        end
 
        # Center of the screen, from the point of view of the camera, at z = 0
@@ -247,10 +245,10 @@ class UICamera
        var bottom: IPoint3d[Float] = new CameraAnchor(self, 0.5, -1.0)
 
        # Center of the left border of the screen, at z = 0
-       var left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -1.0)
+       var left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -0.5)
 
        # Center of the right border of the screen, at z = 0
-       var right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -1.0)
+       var right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -0.5)
 
        # Top left corner of the screen, at z = 0
        var top_left: IPoint3d[Float] = new CameraAnchor(self, 0.0, 0.0)