World Wind v1.4 API Specification

From World Wind Wiki

Revision as of 22:47, 28 April 2005 by Mashiharu (Talk | contribs)
Jump to: navigation, search

Key Interfaces that will be defined in the Plugin API

Contents

IRenderable

  • Methods
    • void Dispose()
    • void Initialize(AppContext appContext)
    • void Render(AppContext appContext)
    • void Update(AppContext appContext) Replaced by Event Handlers to the Camera (and other objects)
  • Properties
    • bool Disposed{get;}
    • bool Initialized{get;} should be private...
    • Hashtable MetaData{get;set;}
    • string Name{get;} //should this be "set" as well?
    • byte Opacity{get;set;}
    • Vector3 Orientation{get;set;}
    • Vector3 Position{get;set;}
    • bool Visible{get;set;} //used to be "IsOn", perhaps this shouldn't be "Visible" because being "Visible" doesn't mean that an object is actually in the View Frustum.

IInteractive

//perhaps there are interfaces in .Net already for this...similar to JAVA KeyListener and MouseListener ?

  • Methods
    • void OnKeyDown(KeyEventArgs e)
    • void OnKeyUp(KeyEventArgs e)
    • void OnMouseDown(MouseEventArgs e)
    • void OnMouseEnter(EventArgs e) //??
    • void OnMouseLeave(EventArgs e)
    • void OnMouseMove(MouseEventArgs e)
    • void OnMouseUp(MouseEventArgs e)
    • void OnMouseWheel(MouseEventArgs e)

ICamera

  • Vector3 Eye{get;set;}
  • Vector3 LookAt{get;set;}
  • Vector3 Up{get;set;} //could be just {0, 0, 1} with Quaternion rotations applied afterwards
  • Quaternion EyeOrientation{get;set;} // Bank, Heading, and Tilt should be calculated from this
  • Quaternion LookAtOrientation{get;set} // Heading and Tilt should should be calculated from this
  • Angle Fov{get;set;}

IWorld

  • double Flattening{get;}
  • double EquatorialRadius{get;}
  • double PolarRadius{get;}

RenderableList <class>

  • Methods
    • void Add(IRenderable renderable)
    • void Dispose()
    • void Initialize(AppContext appContext)
    • void Remove(string name)
    • void Render(AppContext appContext)
    • void Update(AppContext appContext)
  • Properties
    • ArrayList ChildRenderables{get;set;}
    • bool Disposed{get;}
    • bool Initialized{get;}
    • Hashtable MetaData{get;set;}
    • string Name
    • byte Opacity{get;set;}
    • bool Visible{get;set;}

GUIHelper <class>

  • string[] .Menus.GetTopLevel()
  • string[] .Menu[item].GetChildren()
  • .Menus[item].Insert(string text, method to call...)
  • .IconBar.Count
  • .IconBar.Add(Bitmap icon, int position, method to call...)
  • methods to get/set each WWSetting (sticking each property get/set only in the Class might cumbersome. What is best way to get all names and types?)

AppContext <class>

  • Direct3D.Device Direct3D_Device
  • int ScreenWidth
  • int ScreenHeight
  • ...

One issue that has always bothered me was whether to exclusively make the camera "focus" on a "World" or whether to make it focus on a "RenderableObject". Of course, you cannot really define what a view range is if you focus on something like the International Space Station, but perhaps someone would want to focus on that...

Personal tools