com.bladecoder.engine.polygonalpathfinder.NavPathPolygonal.java Source code

Java tutorial

Introduction

Here is the source code for com.bladecoder.engine.polygonalpathfinder.NavPathPolygonal.java

Source

/*******************************************************************************
 * Copyright 2014 Rafael Garcia Moreno.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package com.bladecoder.engine.polygonalpathfinder;

import java.util.ArrayList;

import com.badlogic.gdx.math.Vector2;
import com.bladecoder.engine.pathfinder.NavPath;

/**  
 * Implementation of a navigation path for a polygonal map.
 * 
 * @author rgarcia 
 */
public class NavPathPolygonal implements NavPath<NavNodePolygonal> {
    private final ArrayList<Vector2> resultPath = new ArrayList<Vector2>();

    @Override
    public void fill(NavNodePolygonal startNode, NavNodePolygonal targetNode) {

        // TODO Ineficcient add in index 0 and new

        resultPath.clear();

        NavNodePolygonal current = targetNode;
        while (current != startNode) {
            resultPath.add(0, new Vector2(current.getX(), current.getY()));
            current = (NavNodePolygonal) current.parent;
        }

        resultPath.add(0, new Vector2(current.getX(), current.getY()));
    }

    @Override
    public void clear() {
        resultPath.clear();
    }

    @Override
    public int getLength() {
        return resultPath.size();
    }

    public ArrayList<Vector2> getPath() {
        return resultPath;
    }
}