Knot3.Game.Input.EdgeMovement.MoveEdges C# (CSharp) Method

MoveEdges() private method

Führt das Verschieben der Kanten aus.
private MoveEdges ( GameTime time ) : void
time Microsoft.Xna.Framework.GameTime
return void
        private void MoveEdges(GameTime time)
        {
            // Wenn die Maus über einer Kante oder einem Pfeil liegt
            IGameObject selectedObject = World.SelectedObject;
            if (World.SelectedObject is Pipe || World.SelectedObject is Arrow) {
                // Berechne die Mausposition in 3D
                Vector3 currentMousePosition = World.Camera.To3D (position: Screen.InputManager.CurrentMousePosition, nearTo: selectedObject.Center);

                // Wenn die Maus gedrückt gehalten ist und wir mitten im Ziehen der Kante
                // an die neue Position sind
                if (Screen.InputManager.CurrentInputAction == InputAction.SelectedObjectShadowMove) {
                    // Wenn dies der erste Frame ist...
                    if (previousMousePosition == Vector3.Zero) {
                        previousMousePosition = currentMousePosition;
                        // dann erstelle die Shadowobjekte und fülle die Liste
                        // CreateShadowModels ();
                    }

                    // Setze die Positionen der Shadowobjekte abhängig von der Mausposition
                    if (selectedObject is Arrow) {
                        // Wenn ein Pfeil selektiert wurde, ist die Verschiebe-Richtung eindeutig festgelegt
                        UpdateShadowPipes (currentMousePosition, (selectedObject as Arrow).Direction, time);
                    }
                    else {
                        // Wenn etwas anderes (eine Kante) selektiert wurde,
                        // muss die Verschiebe-Richtung berechnet werden
                        Profiler.ProfileDelegate ["UpdShadowPipes"] = () => {
                            UpdateShadowPipes (currentMousePosition, time);
                        };
                    }

                    // Zeichne im nächsten Frame auf jeden Fall neu
                    World.Redraw = true;
                }

                // Wenn die Verschiebe-Aktion beendet ist (wenn die Maus losgelassen wurde)
                else if (Screen.InputManager.CurrentInputAction == InputAction.SelectedObjectMove) {
                    // Führe die finale Verschiebung durch
                    if (selectedObject is Arrow) {
                        // Wenn ein Pfeil selektiert wurde, ist die Verschiebe-Richtung eindeutig festgelegt
                        MovePipes (currentMousePosition, (selectedObject as Arrow).Direction, time);
                    }
                    else {
                        // Wenn etwas anderes (eine Kante) selektiert wurde,
                        // muss die Verschiebe-Richtung berechnet werden
                        MovePipes (currentMousePosition, time);
                    }
                    //DestroyShadowModels ();
                    // Zeichne im nächsten Frame auf jeden Fall neu
                    World.Redraw = true;
                }

                // Keine Verschiebeaktion
                else {
                    previousMousePosition = Vector3.Zero;
                }
            }
        }