private void Awake() { player = FindObjectOfType <Player>(); edgeColoring = FindObjectOfType <EdgeColoring>(); LoadRescourcesOnAwake(); }
/// <summary> /// Erzeugt eine neue Instanz eines CreativeModeScreen-Objekts und initialisiert diese mit einem Knot3Game-Objekt game, sowie einem Knoten knot. /// </summary> public CreativeModeScreen(GameCore game, Knot knot) : base(game) { // die Spielwelt world = new World (screen: this, drawOrder: DisplayLayer.GameWorld, bounds: Bounds); // der Input-Handler knotInput = new KnotInputHandler (screen: this, world: world); // das Overlay zum Debuggen overlay = new Overlay (screen: this, world: world); // der Mauszeiger pointer = new MousePointer (screen: this); // der Maus-Handler für die 3D-Modelle modelMouseHandler = new ModelMouseHandler (screen: this, world: world); // der Knoten-Renderer knotRenderer = new KnotRenderer (screen: this, position: Vector3.Zero); world.Add (knotRenderer); // visualisiert die BoundingSpheres debugBoundings = new DebugBoundings (screen: this, position: Vector3.Zero); world.Add (debugBoundings); // der Input-Handler zur Kanten-Verschiebung edgeMovement = new EdgeMovement (screen: this, world: world, knotRenderer : knotRenderer, position: Vector3.Zero); edgeMovement.KnotMoved = OnKnotMoved; // der Input-Handler zur Kanten-Einfärbung edgeColoring = new EdgeColoring (screen: this); // Flächen zwischen Kanten edgeRectangles = new EdgeRectangles (screen: this); // assign the specified knot Knot = knot; // Hintergrund Sky skyCube = new Sky (screen: this, position: Vector3.Zero); world.Add (skyCube); // Sonne Sun sun = new Sun (screen: this); world.Add (sun); // Undo-Button undoButton = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Undo", onClick: (time) => OnUndo () ); undoButton.SetCoordinates (left: 0.05f, top: 0.900f, right: 0.15f, bottom: 0.95f); undoButton.AlignX = HorizontalAlignment.Center; undoButton.IsVisible = false; undoButtonBorder = new Border (screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, widget: undoButton, lineWidth: 2, padding: 0); // Redo-Button redoButton = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "Redo", onClick: (time) => OnRedo () ); redoButton.SetCoordinates (left: 0.20f, top: 0.900f, right: 0.30f, bottom: 0.95f); redoButton.AlignX = HorizontalAlignment.Center; redoButton.IsVisible = false; redoButtonBorder = new Border (screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, widget: redoButton, lineWidth: 2, padding: 0); invisible = new Button ( screen: this, drawOrder: DisplayLayer.ScreenUI + DisplayLayer.MenuItem, name: "menu", onClick: (time) => { // erstelle einen neuen Pausedialog knotInput.IsEnabled = false; Dialog pauseDialog = new CreativePauseDialog (screen: this, drawOrder: DisplayLayer.Dialog, knot: Knot); // füge ihn in die Spielkomponentenliste hinzu pauseDialog.Close += (t) => knotInput.IsEnabled = true; AddGameComponents (time, pauseDialog); } ); invisible.SetCoordinates (left: 1.00f, top: 1.00f, right: 1.10f, bottom: 1.10f); invisible.IsVisible = true; invisible.AddKey (Keys.Escape); }