1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef IPATH_H
#define IPATH_H
#include <vector>
#include "System/float3.h"
#include "System/type2.h"
namespace IPath {
// note: ordered from best to worst
enum SearchResult {
Ok,
CantGetCloser,
GoalOutOfRange,
Error
};
typedef std::vector<float3> path_list_type;
typedef std::vector<int2> square_list_type;
struct Path {
Path()
: goalRadius(-1.0f)
, pathCost(-1.0f)
{}
Path(const Path& p) { *this = p; }
Path(Path&& p) { *this = std::move(p); }
Path& operator = (const Path& p) {
path = p.path;
squares = p.squares;
desiredGoal = p.desiredGoal;
pathGoal = p.pathGoal;
goalRadius = p.goalRadius;
pathCost = p.pathCost;
return *this;
}
Path& operator = (Path&& p) {
path = std::move(p.path);
squares = std::move(p.squares);
desiredGoal = p.desiredGoal;
pathGoal = p.pathGoal;
goalRadius = p.goalRadius;
pathCost = p.pathCost;
return *this;
}
path_list_type path;
square_list_type squares;
float3 desiredGoal; // requested goal-position
float3 pathGoal; // generated goal-position
float goalRadius;
float pathCost;
};
}
#endif
|