public void End( EditableCube.Face face, Vector2? mousePos, GameTime gameTime )
        {
            if ( !Started || face != mFace )
                return;

            if ( ValidLine )
            {
                OneWayPlatform platform = new OneWayPlatform(
                    face.Game,
                    face.World,
                    mLine );

                platform.Body.UseAdHocGravity = true;
                platform.Body.AdHocGravity =
                    Vector2.UnitY.Rotate( face.Cube.UpDir.Angle ).Rounded()
                    * 9.8f;

                face.AddSolid( platform );
            }

            Cancel();
        }
        public void End( EditableCube.Face face, Vector2? mousePos, GameTime gameTime )
        {
            if ( !Started || face != mFace )
                return;

            if ( ValidRec )
            {
                HazardBox box = new HazardBox(
                    face.Game,
                    face.World,
                    mRec,
                    BodyType.Static );

                box.Body.UseAdHocGravity = true;
                box.Body.AdHocGravity =
                    Vector2.UnitY.Rotate( face.Cube.UpDir.Angle ).Rounded()
                    * 9.8f;

                face.AddSolid( box );
            }

            Cancel();
        }
        public void End( EditableCube.Face face, Vector2? mousePos, GameTime gameTime )
        {
            if ( !Started || face != mFace )
                return;

            if ( mousePos != null )
            {
                Quarterpipe qpipe = new Quarterpipe(
                    face.Game,
                    face.World,
                    mSmall ? 50 : 100,
                    mousePos.Value,
                    Quarterpipe.Type.SE );

                qpipe.Body.UseAdHocGravity = true;
                qpipe.Body.AdHocGravity =
                    Vector2.UnitY.Rotate( face.Cube.UpDir.Angle ).Rounded()
                    * 9.8f;

                face.AddSolid( qpipe );
            }

            Cancel();
        }
        public void End( EditableCube.Face face, Vector2? mousePos, GameTime gameTime )
        {
            if ( !Started || face != mFace )
                return;

            if ( mousePos != null )
            {
                EndDoor door = new EndDoor(
                    face.Game,
                    face.World,
                    mousePos.Value,
                    mNextLevel );

                door.Body.UseAdHocGravity = true;
                door.Body.AdHocGravity =
                    Vector2.UnitY.Rotate( face.Cube.UpDir.Angle ).Rounded()
                    * 9.8f;

                face.AddSolid( door );
            }

            Cancel();
        }