From LookingGlass

Jump to: navigation, search
Home < Architecture < UserInterface

User Interface

The interface to the user has two main areas: the keyboard navigation of the view and the command and control inputs (login, chat, ...).

HTML Interface

LookingGlass provides HTTP/JSON interfaces and there a web browser is used to access these interfaces. LookingGlass includes a small, fixed function HTTP server to serve up pages designed for controlling LookingGlass.

There are two sets of addresses:

The 'std' URL, under normal configuration, maps to the directory ".../bin/LookingGlassUI/std/". This directory includes common libraries (jquery and common scripts) as common information pages (copyright and licenses).

The 'static' URL, under normal configuration, maps to the directory ".../bin/LookingGlassUI/Default/". There can be multiple 'skins' so the "Default" portion of this URL can be changed by modifying the parameter This directory contains the HTML pages the user sees as well as any CSS and additional script pages.

Keyboard Navigation

Generally, the user can type at the view (when the view has focus) to move the user's agent in the world and to move the camera viewing the world. This input come out of the Renderer. IRenderProvider.UserInterface returns an IUserInterfaceProvider which has events for mouse movement and keyboard key strokes.

There are four implementations of IUserInterfaceProvider:

  • UserInterfaceViewWindow: user interface coming from the standalone view window;
  • UserInterfaceRadegast: user input coming from the Radegast view window;
  • UserInterfaceOgre: user input comes from the Ogre UIO plugin. This is used when the view window was created by the Ogre library. This interface is seldom used any more;
  • UserInterfaceNull: there is always an implementation of IUserInterfaceProvider in the renderer so, if user navigation is coming from somewhere else rather than the view window, a UserInterfaceNull is created and, while allowing routines to subscribe to its mouse and keyboard events, it will never generate anything.

The IRenderProvider selects which IUserInterfaceProvider to use by a configuration parameters which says which module to find it in. RendererOgre, for instance, has the parameter Renderer.Ogre.InputSystem.Name which is the name of the module that implements an IUserInterfaceProvider.

Personal tools