public void ProducePath(PathEditor pe)
    {
        Enemy e = GenerateTestEnemy();

        EnemyMover mover;
        if(moveString.Equals("Linear")){
            mover = new LinearMover(e);
        }else if(moveString.Equals("Linear_Right")){
            mover = new LinearMover(e);
            mover.PutInRightLane();
        }else if(moveString.Equals("Linear_Left")){
            mover = new LinearMover(e);
            mover.PutInLeftLane();
        }else if(moveString.Equals("Slowing_Linear")){
            mover = new SlowingLinearMover(e);
        }else if(moveString.Equals("Slowing_Linear_Right")){
            mover = new SlowingLinearMover(e);
            mover.PutInRightLane();
        }else if(moveString.Equals("Slowing_Linear_Left")){
            mover = new SlowingLinearMover(e);
            mover.PutInLeftLane();
        }else if(moveString.Equals ("Zigzag")){
            mover = new ZigzagMover(e);
        }else if(moveString.Equals ("Zigzag_Mirror")){
            ZigzagMover zm = new ZigzagMover(e);
            zm.Mirror();
            mover = zm;
        }else if(moveString.Equals ("Strafing")){
            mover = new StrafingMover(e);
        }else if(moveString.Equals ("Strafing_Mirror")){
            StrafingMover sm = new StrafingMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Sine")){
            mover = new SineMover(e);
        }else if(moveString.Equals ("Sine_Mirror")){
            SineMover sm = new SineMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Swerve_Right")){
            mover = new SwerveMover(e);
        }else if(moveString.Equals ("Swerve_Left")){
            SwerveMover sm = new SwerveMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Swerve_In_Left")){
            SwerveMover sm = new SwerveMover(e);
            sm.PutInLeftLane();
            mover = sm;
        }else if(moveString.Equals ("Swerve_In_Right")){
            SwerveMover sm = new SwerveMover(e);
            sm.PutInRightLane();
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Semicircle")){
            mover = new SemicircleMover(e);
        }else if(moveString.Equals ("Semicircle_Mirror")){
            SemicircleMover sm = new SemicircleMover(e);
            sm.Mirror();
            mover = sm;
        }else if(moveString.Equals ("Sidestep")){
            mover = new SidestepMover(e);
        }else if(moveString.Equals ("Sidestep_Mirror")){
            SidestepMover sm = new SidestepMover(e);
            sm.Mirror();
            mover = sm;
        }else{
            Debug.Log ("Invalid mover type!");
            Destroy(e.gameObject);
            return;
        }
        mover.LeftOffset(30f);
        Vector2[] pointset = new Vector2[pointResolution];
        for(int i = 0; i < pointResolution; i++){
            float prog = ((float)i)/((float)(pointResolution-1));
            pointset[i] = mover.PositionFromProgress(prog);
        }
        Destroy (e.gameObject);
        //convert vector set to point-based path
        pe.GeneratePathFromVectorArray(pointset);
    }
    public void ProducePath(PathEditor pe)
    {
        Enemy e = GenerateTestEnemy();

        EnemyMover mover;

        if (moveString.Equals("Linear"))
        {
            mover = new LinearMover(e);
        }
        else if (moveString.Equals("Linear_Right"))
        {
            mover = new LinearMover(e);
            mover.PutInRightLane();
        }
        else if (moveString.Equals("Linear_Left"))
        {
            mover = new LinearMover(e);
            mover.PutInLeftLane();
        }
        else if (moveString.Equals("Slowing_Linear"))
        {
            mover = new SlowingLinearMover(e);
        }
        else if (moveString.Equals("Slowing_Linear_Right"))
        {
            mover = new SlowingLinearMover(e);
            mover.PutInRightLane();
        }
        else if (moveString.Equals("Slowing_Linear_Left"))
        {
            mover = new SlowingLinearMover(e);
            mover.PutInLeftLane();
        }
        else if (moveString.Equals("Zigzag"))
        {
            mover = new ZigzagMover(e);
        }
        else if (moveString.Equals("Zigzag_Mirror"))
        {
            ZigzagMover zm = new ZigzagMover(e);
            zm.Mirror();
            mover = zm;
        }
        else if (moveString.Equals("Strafing"))
        {
            mover = new StrafingMover(e);
        }
        else if (moveString.Equals("Strafing_Mirror"))
        {
            StrafingMover sm = new StrafingMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Sine"))
        {
            mover = new SineMover(e);
        }
        else if (moveString.Equals("Sine_Mirror"))
        {
            SineMover sm = new SineMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Swerve_Right"))
        {
            mover = new SwerveMover(e);
        }
        else if (moveString.Equals("Swerve_Left"))
        {
            SwerveMover sm = new SwerveMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Swerve_In_Left"))
        {
            SwerveMover sm = new SwerveMover(e);
            sm.PutInLeftLane();
            mover = sm;
        }
        else if (moveString.Equals("Swerve_In_Right"))
        {
            SwerveMover sm = new SwerveMover(e);
            sm.PutInRightLane();
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Semicircle"))
        {
            mover = new SemicircleMover(e);
        }
        else if (moveString.Equals("Semicircle_Mirror"))
        {
            SemicircleMover sm = new SemicircleMover(e);
            sm.Mirror();
            mover = sm;
        }
        else if (moveString.Equals("Sidestep"))
        {
            mover = new SidestepMover(e);
        }
        else if (moveString.Equals("Sidestep_Mirror"))
        {
            SidestepMover sm = new SidestepMover(e);
            sm.Mirror();
            mover = sm;
        }
        else
        {
            Debug.Log("Invalid mover type!");
            Destroy(e.gameObject);
            return;
        }
        mover.LeftOffset(30f);
        Vector2[] pointset = new Vector2[pointResolution];
        for (int i = 0; i < pointResolution; i++)
        {
            float prog = ((float)i) / ((float)(pointResolution - 1));
            pointset[i] = mover.PositionFromProgress(prog);
        }
        Destroy(e.gameObject);
        //convert vector set to point-based path
        pe.GeneratePathFromVectorArray(pointset);
    }