// 
public class Angles3 : 
  Attributes:
    // 
    + X : float
    // 
    + Y : float
    // 
    + Z : float
    // 
    + Zero : Angles3
  Methods:
    // 
    + FromDegrees (float X, float Y, float Z) : Angles3
    // 
    + Angles3 (float X, float Y, float Z) : void
    // 
    + ToDegrees (float X, float Y, float Z) : void

// Diese Klasse repräsentiert ein 3D-Modell für einen Pfeil, der an selektierten Kanten erscheinen soll.
public class ArrowModel : 
  Attributes:
    // Das Info-Objekt, das die Position und Richtung des Pfeils enthält.
    + Info : ArrowModelInfo
  Methods:
    // Zeichnet den Pfeil.
    + Draw (GameTime GameTime) : void
    // 
    + Intersects (Ray ray) : GameObjectDistance
    // Erstellt ein neues Pfeilmodell in dem angegebenen GameScreen mit einem bestimmten Info-Objekt, das Position und Richtung des Pfeils festlegt.
    + ArrowModel (GameScreen screen, ArrowModelInfo info) : void
    // 
    + Update (GameTime GameTime) : void

// Ein Objekt dieser Klasse hält alle Informationen hält, die zur Erstellung eines Pfeil-3D-Modelles (ArrowModel) notwendig sind.
public class ArrowModelInfo : 
  Attributes:
    // Die Richtung, die die der Pfeil zeigen soll.
    + Direction : Vector3
  Methods:
    // Erstellt ein neues ArrowModelInfo-Objekt an einer bestimmten Position im 3D-Raum, das in eine bestimmte Richtung zeigt.
    + ArrowModelInfo (Vector3 position, Vector3 direction) : void

// 
public class AudioSettingsScreen : 
  Attributes:
    // 
    # settingsMenu : void
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// Diese Klasse repräsentiert eine Option, die die Werte Wahr oder Falsch annehmen kann.
public class BooleanOptionInfo : 
  Attributes:
    // Ein Property, das den aktuell abgespeicherten Wert zurück gibt.
    + Value : bool
  Methods:
    + BooleanOptionInfo (String section, String name, String defaultValue, ConfigFile configFile) : void

// Jede Instanz der World-Klasse hält eine für diese Spielwelt verwendete Kamera als Attribut.
// Die Hauptfunktion der Kamera-Klasse ist das Berechnen der drei Matrizen, die für die Positionierung
// und Skalierung von 3D-Objekten in einer bestimmten Spielwelt benötigt werden, der View-, World- und Projection-Matrix.
// Um diese Matrizen zu berechnen, benötigt die Kamera unter Anderem Informationen über die aktuelle Kamera-Position,
// das aktuelle Kamera-Target und das Field of View.
public class Camera : 
  Attributes:
    // Die Position der Kamera.
    + Position : Vector3
    // Das Ziel der Kamera.
    + Target : Vector3
    // Das Field of View.
    + FoV : float
    // Die View-Matrix wird über die statische Methode CreateLookAt der Klasse Matrix des XNA-Frameworks mit Matrix.CreateLookAt (Position, Target, Vector3.Up) berechnet.
    + ViewMatrix : Matrix
    // Die World-Matrix wird mit Matrix.CreateFromYawPitchRoll und den drei Rotationswinkeln berechnet.
    + WorldMatrix : Matrix
    // Die Projektionsmatrix wird über die statische XNA-Methode Matrix.CreatePerspectiveFieldOfView berechnet.
    + ProjectionMatrix : Matrix
    // Eine Position, um die rotiert werden soll, wenn der User die rechte Maustaste gedrückt hält und die Maus bewegt.
    + ArcballTarget : Vector3
    // Berechnet ein Bounding-Frustum, das benötigt wird, um festzustellen, ob ein 3D-Objekt sich um Blickfeld des Spielers befindet.
    + ViewFrustum : BoundingFrustum
    // Eine Referenz auf die Spielwelt, für die die Kamera zuständig ist.
    - World : World
    // 
    + Rotation : Angles3
  Methods:
    // 
    + TargetDirection () : Vector3
    // 
    + TargetDistance () : float
    // 
    + Camera (GameScreen screen, World world) : void
    // 
    + Update (GameTime GameTime) : void
    // 
    + GetMouseRay (Vector2 mousePosition) : Ray

// 
public class CelShadingEffect : 
  Attributes:
  Methods:
    // 
    # DrawRenderTarget (GameTime) : void
    // 
    + DrawModel (GameTime, GameModel GameModel) : void
    // 
    + RemapModel (GameModel GameModel) : void
    // 
    + CelShadingEffect (GameScreen screen) : void

// 
public class Challenge : 
  Attributes:
    // 
    + Start : Knot
    // 
    + Target : Knot
    // 
    - highscore : SortedList<Integer, String>
    // 
    + Name : String
    // 
    - file : IChallengeIO
    // 
    + Highscore : IEnumerator<KeyValuePair<String, Integer>>
    // 
    + Info : ChallengeMetaData
  Methods:
    // 
    + Challenge (ChallengeInfo info) : Challenge
    // 
    + Challenge (IChallangeIO file) : Challenge
    // 
    + CreateChallenge (Knot start, Knot target, String name, IChallengeIO file) : Boolean
    // 
    + AddToHighscore (String name, Integer time) : void

// 
public class ChallengeFileIO : 
  Attributes:
    // 
    + Highscore : IEnumerable<KeyValuePair<String, Integer>>
    // 
    + Name : String
    // 
    + StartKnot : Knot
    // 
    + TargetKnot : Knot
    // 
    - startParser : KnotStringIO
    // 
    - targetParser : KnotStringIO
    // 
    + Meta : ChallengeMetaData
  Methods:
    // 
    + ChallengeFileIO (String path) : void
    // 
    + Save (Challenge challenge) : void

// 
public class ChallengeLoadScreen : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class ChallengeMetaData : 
  Attributes:
    // 
    + Name : String
    // 
    + Start : KnotMetaData
    // 
    + Target : KnotMetaData
    // 
    + File : IChallengeIO
  Methods:

// 
public class ChallengeMode : 
  Attributes:
    // 
    + PlayerKnot : void
    // 
    + ChallengeKnot : void
    // 
    - ChallengeWorld : World
    // 
    - PlayerWorld : World
    // 
    - ChallengeKnotRenderer : KnotRenderer
    // 
    - PlayerKnotRenderer : KnotRenderer
    // 
    - PlayerKnotMovement : PipeMovement
    // 
    + Undo : Stack<Knot>
    // 
    + Redo : Stack<Knot>
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class CheckBoxItem : 
  Attributes:
    // 
    - option : BooleanOptionInfo
  Methods:
    // 
    + CheckBoxItem (BooleanOptionInfo option) : void

// 
public class Circle : 
  Attributes:
    // 
    + Content : T
    // 
    + Next : Circle
    // 
    + Previous : Circle
  Methods:
    // 
    + Circle (T content) : void

// 
public class ColorPicker : 
  Attributes:
    // 
    + Color : Color
  Methods:
    // 
    + OnKeyEvent () : void
    // 
    + OnLeftClick () : void
    // 
    + OnRightClick () : void
    // 
    + Bounds () : Rectangle

// 
public class ColorPickItem : 
  Attributes:
    // 
    + Color : Color
  Methods:

// 
public class ConfigFile : 
  Attributes:
  Methods:
    // 
    + SetOption (String section, String option, String value) : void
    // 
    + GetOption (String section, String option, Boolean defaultValue) : Boolean
    // 
    + GetOption (String section, String option, String defaultValue) : String
    // 
    + SetOption (String section, String option, Boolean _value) : void

// 
public class ConfirmDialog : 
  Attributes:
    // 
    - buttons : Menu
  Methods:

// 
public class ControlSettingsScreen : 
  Attributes:
    // 
    # settingsMenu : void
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class CreativeLoadScreen : 
  Attributes:
  Methods:
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void
    // 
    + Update (GameTime time) : void

// 
public class CreativeMode : 
  Attributes:
    // 
    + Knot : void
    // 
    - World : World
    // 
    - KnotRenderer : KnotRenderer
    // 
    + Undo : Stack<Knot>
    // 
    + Redo : Stack<Knot>
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime time) : void

// 
public class CreditsScreen : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class Dialog : 
  Attributes:
    // 
    + Name : String
    // 
    + Text : String
  Methods:
    // 
    + OnKeyEvent () : void
    // 
    + OnLeftClick () : void
    // 
    + OnRightClick () : void
    // 
    + Bounds () : Rectangle

// 
public class DistinctOptionInfo : 
  Attributes:
    // 
    + ValidValues : HashSet<string>
    // 
    + Value : String
  Methods:
    // 
    + DistinctOptionInfo (String section, String name, String defaultValue, IEnumerable<string> validValues, ConfigFile configFile) : void

// 
public class DrawableGameScreenComponent : 
  Attributes:
    // 
    + Screen : GameScreen
    // 
    + Index : DisplayLayer
  Methods:
    // 
    + SubComponents (GameTime GameTime) : IEnumerable
    // 
    + DrawableGameStateComponent (GameScreen screen, DisplayLayer index) : void

// 
public class DropDownEntry : 
  Attributes:
    // 
    + Text : String
  Methods:

// 
public class DropDownMenuItem : 
  Attributes:
    // 
    - dropdown : VerticalMenu
  Methods:
    // 
    + AddEntries (DistinctOptionInfo option) : void
    // 
    + AddEntries (DropDownEntry enties) : void

// 
public class Edge : 
  Attributes:
    // 
    + Color : Color
    // 
    + Direction : Direction
    // 
    + Rectangles : List<int>
  Methods:
    // 
    + Edge (Direction direction) : void
    // 
    + Get3DDirection () : Vector3

// 
public class FadeEffect : 
  Attributes:
    // 
    - IsFinished : Boolean
    // 
    - PreviousRenderTarget : RenderTarget2D
  Methods:
    // 
    + FadeEffect (GameScreen newScreen, GameScreen oldScreen) : void
    // 
    # DrawRenderTarget (GameTime) : void

// 
public class FileIO : 
  Attributes:
    // 
    + FileName : String
  Methods:
    // 
    + ConvertToFileName (String name) : String

// 
public class Game : 
  Attributes:
  Methods:

// 
public class GameModel : 
  Attributes:
    // 
    + Alpha : float
    // 
    + BaseColor : Color
    // 
    + HightlightColor : Color
    // 
    + HighlightIntensity : float
    // 
    + Info : GameModelInfo
    // 
    + Model : XNA.Model
    // 
    + World : World
    // 
    + WorldMatrix : Matrix
  Methods:
    // 
    + Center () : Vector3
    // 
    + Update (GameTime GameTime) : void
    // 
    + Draw (GameTime GameTime) : void
    // 
    + Intersects (Ray Ray) : GameObjectDistance
    // 
    + GameModel (GameScreen, GameModelInfo) : void

// 
public class GameModelInfo : 
  Attributes:
    // 
    + Modelname : String
    // 
    + Rotation : Angles3
    // 
    + Scale : Vector3
  Methods:
    // 
    + GameModelInfo (String modelname, Angles3 rotation) : void

// 
public class GameObjectInfo : 
  Attributes:
    // 
    + IsMovable : Boolean
    // 
    + IsSelectable : Boolean
    // 
    + IsVisible : Boolean
    // 
    + Position : Vector3
  Methods:
    // 
    + Equals (GameObjectInfo GameObjectInfo) : Boolean
    // 
    + Equals (T other) : Boolean

// 
public class GameScreen : 
  Attributes:
    // 
    + Game : Knot3Game
    // 
    + Input : Input
    // 
    + PostProcessingEffect : RenderEffect
    // 
    + CurrentRenderEffects : RenderEffectStack
  Methods:
    // 
    + Entered (GameScreen previousScreen, GameTime time) : void
    // 
    + BeforeExit (GameScreen nextScreen, GameTime time) : void
    // 
    + Update (GameTime time) : void
    // 
    + GameScreen (Knot3Game game) : void
    // 
    + AddGameComponents (IGameStateComponent[] components) : void
    // 
    + RemoveGameComponents (IGameStateComponent[] components) : void

// 
public class GameScreenComponent : 
  Attributes:
    // 
    + Index : DisplayLayer
    // 
    + Screen : GameScreen
  Methods:
    // 
    + SubComponents (GameTime GameTime) : IEnumerable
    // 
    + GameStateComponent (GameScreen screen, DisplayLayer index) : void

// 
public class GraphicsSettingsScreen : 
  Attributes:
    // 
    # settingsMenu : void
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public interface IChallengeIO : 
  Attributes:
    // 
    + Highscore : IEnumerable<KeyValuePair<String, Integer>>
    // 
    + Name : String
    // 
    + StartKnot : Knot
    // 
    + TargetKnot : Knot
    // 
    + Meta : ChallengeMetaData
  Methods:
    // 
    + Save (Challenge challenge) : void

// 
public interface ICloneable : 
  Attributes:
  Methods:
    // 
    + Clone () : Object

// 
public interface IEnumerable : 
  Attributes:
  Methods:
    // 
    + GetEnumerator () : IEnumerator

// 
public interface IEnumerable<Edge> : 
  Attributes:
  Methods:

// 
public interface IEnumerable<IGameObject> : 
  Attributes:
  Methods:

// 
public interface IEnumerable<MenuItem> : 
  Attributes:
  Methods:

// 
public interface IEnumerable1 : 
  Attributes:
  Methods:
    // 
    + GetEnumerator () : IEnumerator

// 
public interface IEquatable : 
  Attributes:
  Methods:
    // 
    + Equals (T other) : Boolean

// 
public interface IEquatable<Angles3> : 
  Attributes:
  Methods:

// 
public interface IEquatable<GameObjectInfo> : 
  Attributes:
  Methods:

// 
public interface IEquatable1 : 
  Attributes:
  Methods:
    // 
    + Equals (T other) : Boolean

// 
public interface IGameObject : 
  Attributes:
    // 
    + Info : GameObjectInfo
    // 
    + World : World
  Methods:
    // 
    + Center () : Vector3
    // 
    + Update (GameTime time) : void
    // 
    + Draw (GameTime time) : void
    // 
    + Intersects (Ray ray) : GameObjectDistance

// 
public interface IGameStateComponent : 
  Attributes:
    // 
    + Index : DisplayLayer
    // 
    + Screen : GameScreen
  Methods:
    // 
    + SubComponents (GameTime time) : IEnumerable

// 
public interface IJunction : 
  Attributes:
    // 
    + EdgeFrom : Edge
    // 
    + EdgeTo : Edge
  Methods:

// 
public interface IKeyEventListener : 
  Attributes:
    // 
    + Index : DisplayLayer
    // 
    + IsKeyEventEnabled : Boolean
    // 
    + ValidKeys : List<Keys>
  Methods:
    // 
    + OnKeyEvent () : void

// 
public interface IKnotIO : 
  Attributes:
    // 
    + Edges : IEnumerable<Edge>
    // 
    + Name : String
    // 
    + MetaData : KnotMetaData
  Methods:
    // 
    + Save (Knot knot) : void

// 
public interface IMouseEventListener : 
  Attributes:
    // 
    + Index : DisplayLayer
    // 
    + IsMouseEventEnabled : Boolean
  Methods:
    // 
    + OnLeftClick () : void
    // 
    + OnRightClick () : void
    // 
    + Bounds () : Rectangle

// 
public class Input : 
  Attributes:
    // 
    + RightMouseButton : ClickState
    // 
    + LeftMouseButton : ClickState
    // 
    + CurrentMouseState : MouseState
    // 
    + CurrentKeyboardState : KeyboardState
    // 
    + PreviousMouseState : MouseState
    // 
    + PreviousKeyboardState : KeyboardState
    // 
    + GrabMouseMovement : Boolean
  Methods:
    // 
    + Input (GameScreen screen) : void
    // 
    + Update (GameTime time) : void

// 
public class InputItem : 
  Attributes:
    // 
    + InputText : String
  Methods:

// 
public interface IRenderEffect : 
  Attributes:
    // 
    + RenderTarget : RenderTarget2D
  Methods:
    // 
    + Begin (GameTime) : void
    // 
    + End (GameTime) : void
    // 
    + DrawModel (GameTime, GameModel model) : void
    // 
    + RemapModel (GameModel model) : void

// 
public class KeyInputItem : 
  Attributes:
    // 
    - option : OptionInfo
  Methods:
    // 
    + OnKeyEvent () : void

// 
public class Knot : 
  Attributes:
    // 
    + Name : String
    // 
    - edges : Circle
    // 
    + MetaData : KnotMetaData
    // 
    - file : IKnotIO
    // 
    + EdgesChanged : Action
    // 
    + SelectedEdges : IEnumerable<Edge>
  Methods:
    // 
    + Knot () : void
    // 
    + Save () : void
    // 
    + ClearSelection () : void
    // 
    + Knot (IKnotIO file) : void
    // 
    + Knot (KnotMetaData info) : void
    // 
    + IsValidMove (Direction dir, Integer distance) : Boolean
    // 
    + Move (Direction dir, Integer distance) : Boolean
    // 
    +  (Knot knotA, Knot knotB) : Boolean
    // 
    +  (Knot knotA, Knot knotB) : Boolean
    // 
    + GetEnumerator () : IEnumerator<Edge>
    // 
    + Save (IKnotIO file) : void
    // 
    + Clone () : Object
    // 
    + AddToSelection (Edge edge) : void
    // 
    + RemoveFromSelection (Edge edge) : void
    // 
    + AddRangeToSelection (Edge edge) : void
    // 
    + IsSelected (Edge edge) : Boolean

// 
public class Knot3Game : 
  Attributes:
    // 
    + IsFullScreen : Boolean
    // 
    + Screens : Stack<GameScreen>
    // 
    + VSync : Boolean
    // 
    + Graphics : GraphicsDeviceManager
  Methods:
    // 
    + Game () : void
    // 
    + Initialize () : void
    // 
    + LoadContent () : void
    // 
    + UnloadContent () : void
    // 
    + Draw (GameTime) : void
    // 
    + Update (GameTime) : void

// 
public class KnotFileIO : 
  Attributes:
    // 
    + Edges : IEnumerable<Edge>
    // 
    + Name : String
    // 
    - parser : KnotStringIO
    // 
    + MetaData : KnotMetaData
  Methods:
    // 
    + KnotFileIO (String path) : void
    // 
    + Save (Knot knot) : void
    // 
    + KnotFileIO (Knot knot) : void

// 
public class KnotInputHandler : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void

// 
public class KnotMetaData : 
  Attributes:
    // 
    + Name : String
    // 
    + File : IKnotIO
    // 
    + CountEdges : Integer
  Methods:
    // 
    + KnotMetaData (String name, Integer countEdges, IKnotIO file) : KnotMetaData

// 
public class KnotRenderer : 
  Attributes:
    // 
    + Info : GameObjectInfo
    // 
    + World : World
    // 
    - arrows : List<ArrowModel>
    // 
    - nodes : List<NodeModel>
    // 
    - pipes : List<PipeModel>
    // 
    + Knot : Knot
    // 
    - pipeFactory : ModelFactory
    // 
    - nodeFactory : ModelFactory
    // 
    - arrowFactory : ModelFactory
  Methods:
    // 
    + Center () : Vector3
    // 
    + Intersects (Ray Ray) : GameObjectDistance
    // 
    + OnEdgesChanged () : void
    // 
    + ModelRenderer (GameScreen screen, GameObjectInfo info) : void
    // 
    + Update (GameTime GameTime) : void
    // 
    + Draw (GameTime GameTime) : void
    // 
    + GetEnumerator () : IEnumerator

// 
public class KnotStringIO : 
  Attributes:
    // 
    + Name : String
    // 
    + Edges : IErnumerable<Edge>
    // 
    + Content : String
    // 
    + MetaData : KnotMetaData
  Methods:
    // 
    + Save (Knot knot) : void
    // 
    + KnotStringIO (String content) : void

// 
public class Localizer : 
  Attributes:
  Methods:
    // 
    + Localize (String text) : String

// 
public class Menu : 
  Attributes:
    // 
    + Name : String
    // 
    + RelativeItemSize : Func<int, Vector2>
    // 
    + RelativeItemPosition : Func<int, Vector2>
    // 
    + ItemForegroundColor : Func<ItemState, Vector2>
    // 
    + ItemBackgroundColor : Func<ItemState, Vector2>
    // 
    + ItemAlignX : HorizontalAlignment
    // 
    + ItemAlignY : VerticalAlignment
  Methods:
    // 
    + Add (MenuItem item) : void
    // 
    + Delete (MenuItem item) : void
    // 
    + GetItem (Integer i) : MenuItem
    // 
    + Size () : Integer
    // 
    + GetEnumerator () : IEnumerator

// 
public class MenuButton : 
  Attributes:
    // 
    + Name : String
  Methods:
    // 
    + MenuButton (String name) : void

// 
public class MenuItem : 
  Attributes:
    // 
    + ItemState : ItemState
    // 
    + ItemOrder : Integer
    // 
    + Text : String
  Methods:
    // 
    + OnLeftClick () : void
    // 
    + OnRightClick () : void
    // 
    + OnKeyEvent () : void
    // 
    + Bounds () : Rectangle

// 
public class MenuScreen : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class ModelFactory : 
  Attributes:
    // 
    - cache : Dictionary<GameModelInfo, GameModel>
    // 
    - createModel : Func<GameScreen, GameModelInfo, GameModel>
  Methods:
    // 
    + this (GameScreen state, GameModelInfo info) : GameModel
    // 
    + ModelFactory (Func<GameScreen, GameModelInfo, ) : void

// 
public class ModelMouseHandler : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void

// 
public class MousePointer : 
  Attributes:
  Methods:
    // 
    + MousePointer (GameState) : void
    // 
    + Draw (GameTime) : void

// 
public class NodeMap : 
  Attributes:
  Methods:
    // 
    + From (Edge edge) : Node
    // 
    + To (Edge edge) : Node
    // 
    + OnEdgesChanged () : void

// 
public class NodeModel : 
  Attributes:
    // 
    + Info : NodeModelInfo
  Methods:
    // 
    + NodeModel (GameScreen screen, NodeModelInfo info) : void
    // 
    + Draw (GameTime GameTime) : void
    // 
    + Update (GameTime GameTime) : void

// 
public class NodeModelInfo : 
  Attributes:
    // 
    + EdgeFrom : Edge
    // 
    + EdgeTo : Edge
    // 
    + Knot : Knot
    // 
    + Position : Vector3
  Methods:
    // 
    + NodeModelInfo (Knot knot, Edge from, Edge to) : void

// 
public class OptionInfo : 
  Attributes:
    // 
    - configFile : ConfigFile
    // 
    + Section : String
    // 
    + Name : String
    // 
    + DefaultValue : String
    // 
    + Value : String
  Methods:
    // 
    + OptionInfo (String section, String name, String defaultValue, ConfigFile configFile) : void

// 
public class Options : 
  Attributes:
    // 
    + Default : ConfigFile
  Methods:

// 
public class PauseDialog : 
  Attributes:
    // 
    - pauseMenu : VerticalMenu
  Methods:

// 
public class PipeModel : 
  Attributes:
    // 
    + Info : PipeModelInfo
  Methods:
    // 
    + Intersects (Ray ray) : GameObjectDistance
    // 
    + PipeModel (GameScreen screen, PipeModelInfo info) : void

// 
public class PipeModelInfo : 
  Attributes:
    // 
    + Edge : Edge
    // 
    + Knot : Knot
    // 
    + PositionFrom : Vector3
    // 
    + PositionTo : Vector3
  Methods:
    // 
    + PipeModelInfo (Knot knot, Edge edge) : void

// 
public class PipeMovement : 
  Attributes:
    // 
    + Info : GameObjectInfo
    // 
    + Knot : Knot
    // 
    + World : World
  Methods:
    // 
    + Center () : Vector3
    // 
    + Intersects (Ray Ray) : GameObjectDistance
    // 
    + Update (GameTime GameTime) : void
    // 
    + PipeMovement (GameState, World, GameObjectInfo) : void
    // 
    + GetEnumerator () : IEnumerator
    // 
    + Draw (GameTime GameTime) : void

// 
public class PrinterIO : 
  Attributes:
    // 
    + Edges : IEnumerable<Edge>
    // 
    + Name : String
    // 
    + MetaData : KnotMetaData
  Methods:
    // 
    + Save (Knot knot) : void
    // 
    + PrinterIO (string path) : void

// 
public class ProfileSettingsScreen : 
  Attributes:
    // 
    # settingsMenu : void
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class RenderEffect : 
  Attributes:
    // 
    + RenderTarget : RenderTarget2D
    // 
    # screen : GameScreen
    // 
    # spriteBatch : SpriteBatch
  Methods:
    // 
    + Begin (GameTime) : void
    // 
    + End (GameTime) : void
    // 
    + DrawModel (GameTime, GameModel GameModel) : void
    // 
    + RemapModel (GameModel GameModel) : void
    // 
    # DrawRenderTarget (GameTime) : void

// 
public class RenderEffectStack : 
  Attributes:
    // 
    + CurrentEffect : IRenderEffect
    // 
    - DefaultEffect : IRenderEffect
  Methods:
    // 
    + Pop () : IRenderEffect
    // 
    + Push (IRenderEffect effect) : void
    // 
    + RenderEffectStack (IRenderEffect defaultEffect) : void

// 
public class SaveDialog : 
  Attributes:
  Methods:

// 
public class SettingsScreen : 
  Attributes:
    // 
    # navigation : void
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime time) : void

// 
public class ShadowGameModel : 
  Attributes:
    // 
    + ShadowColor : Color
    // 
    + ShadowAlpha : float
  Methods:
    // 
    + ShadowGameModel (GameScreen sreen, GameModel decoratedModel) : void
    // 
    + Draw (GameTime GameTime) : void

// 
public class ShadowGameObject : 
  Attributes:
    // 
    + Info : GameObjectInfo
    // 
    + World : World
    // 
    + ShadowPosition : Vector3
    // 
    + OriginalPosition : Vector3
  Methods:
    // 
    + Center () : Vector3
    // 
    + Update (GameTime GameTime) : void
    // 
    + Draw (GameTime GameTime) : void
    // 
    + Intersects (Ray Ray) : GameObjectDistance
    // 
    + ShadowGameObject (GameScreen screen, IGameObject decoratedObj) : void

// 
public class SliderItem : 
  Attributes:
    // 
    + Value : Integer
    // 
    + MinValue : Integer
    // 
    + MaxValue : Integer
  Methods:

// 
public class StandardEffect : 
  Attributes:
  Methods:
    // 
    # DrawRenderTarget (GameTime) : void
    // 
    + StandardEffect (GameScreen screen) : void

// 
public class StartScreen : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class SubMenu : 
  Attributes:
  Methods:

// 
public interface T : 
  Attributes:
  Methods:

// 
public class T : 
  Attributes:
  Methods:

// 
public class T : 
  Attributes:
  Methods:

// 
public class T : 
  Attributes:
  Methods:

// 
public interface T : 
  Attributes:
  Methods:

// 
public class TextInputDialog : 
  Attributes:
    // 
    + InputText : String
  Methods:

// 
public class TutorialChallengeMode : 
  Attributes:
  Methods:
    // 
    + Entered (GameScreen previousScreen, GameTime GameTime) : void

// 
public class VerticalMenu : 
  Attributes:
  Methods:
    // 
    + AlignItems () : void

// 
public class Widget : 
  Attributes:
    // 
    + RelativeSize : Vector2
    // 
    + RelativePosition : Vector2
    // 
    + IsVisible : bool
    // 
    + BackgroundColor : Func<Color>
    // 
    + ForegroundColor : Func<Color>
    // 
    + AlignX : HorizontalAlignment
    // 
    + AlignY : VerticalAlignment
  Methods:
    // 
    + BoundingBox () : Rectangle
    // 
    + Widget (GameScreen screen, DisplayLayer drawOrder) : void

// 
public class WidgetKeyHandler : 
  Attributes:
  Methods:
    // 
    + Update () : void

// 
public class WidgetMouseHandler : 
  Attributes:
  Methods:
    // 
    + Update () : void

// 
public class World : 
  Attributes:
    // 
    + Camera : void
    // 
    + Objects : List<IGameObject>
    // 
    + SelectedObject : IGameObject
    // 
    + CurrentEffect : IRenderEffect
  Methods:
    // 
    + Update (GameTime GameTime) : void
    // 
    + Draw (GameTime GameTime) : void
    // 
    + World (GameScreen screen) : void
    // 
    + GetEnumerator () : IEnumerator

// 
public class XNA.DrawableGameComponent : 
  Attributes:
  Methods:
    // 
    + Draw (GameTime time) : void
    // 
    + Update (GameTime time) : void

// 
public class XNA.Game : 
  Attributes:
  Methods:
    // 
    + Game () : void
    // 
    + Initialize () : void
    // 
    + LoadContent () : void
    // 
    + UnloadContent () : void
    // 
    + Update (GameTime) : void
    // 
    + Draw (GameTime) : void

// 
public class XNA.GameComponent : 
  Attributes:
  Methods:
    // 
    + Update (GameTime time) : void

// 
public interface XNA.IGameComponent : 
  Attributes:
  Methods:

