def METHOD_NAME(self, renderer) -> bool:
    if not self._enabled:
        return True
    if not self._shader:
        self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "toolhandle.shader"))
    if self._auto_scale:
        active_camera = self._scene.getActiveCamera()
        if active_camera.isPerspective():
            camera_position = active_camera.getWorldPosition()
            dist = (camera_position - self.getWorldPosition()).length()
            scale = dist / 400
        else:
            view_width = active_camera.getViewportWidth()
            current_size = view_width + (2 * active_camera.getZoomFactor() * view_width)
            scale = current_size / view_width * 5
        self.setScale(Vector(scale, scale, scale))
    if self._line_mesh:
        renderer.queueNode(self, mesh = self._line_mesh, mode = RenderBatch.RenderMode.Lines, overlay = True, shader = self._shader)
    if self._solid_mesh:
        renderer.queueNode(self, mesh = self._solid_mesh, overlay = True, shader = self._shader)
    return True