better variable names
This commit is contained in:
parent
677492eb09
commit
f03eb0ceb9
5
Map.pde
5
Map.pde
|
@ -58,12 +58,13 @@ class Wall
|
||||||
|
|
||||||
void draw()
|
void draw()
|
||||||
{
|
{
|
||||||
strokeWeight(3);
|
|
||||||
|
strokeWeight(1);
|
||||||
line(start.x, start.y, end.x, end.y);
|
line(start.x, start.y, end.x, end.y);
|
||||||
if (SHOW_WALL_DIRECTION)
|
if (SHOW_WALL_DIRECTION)
|
||||||
{
|
{
|
||||||
PVector marker = PVector.add(PVector.mult(start, 0.2), PVector.mult(end, 0.8));
|
PVector marker = PVector.add(PVector.mult(start, 0.2), PVector.mult(end, 0.8));
|
||||||
circle(marker.x, marker.y, 5);
|
circle(marker.x, marker.y, 6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
47
NavMesh.pde
47
NavMesh.pde
|
@ -1,5 +1,5 @@
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
Map origin_map;
|
||||||
class Node
|
class Node
|
||||||
{
|
{
|
||||||
String id;
|
String id;
|
||||||
|
@ -73,7 +73,7 @@ class SearchFrontier{
|
||||||
class NavMesh
|
class NavMesh
|
||||||
{
|
{
|
||||||
ArrayList<Node> nodes = new ArrayList<Node>();
|
ArrayList<Node> nodes = new ArrayList<Node>();
|
||||||
int recursionDepth = 0;
|
int rec_stack_count = 0;
|
||||||
int maxDepth = 1000;
|
int maxDepth = 1000;
|
||||||
int pointAmount = 0;
|
int pointAmount = 0;
|
||||||
|
|
||||||
|
@ -156,55 +156,50 @@ class NavMesh
|
||||||
node_verts.add(w.start);
|
node_verts.add(w.start);
|
||||||
}
|
}
|
||||||
|
|
||||||
//for polygon_1, just make a polygon from index A to B
|
//make polygon from index 1 to 2.
|
||||||
for(int i = index_1; i<=index_2; i++)
|
for(int i = index_1; i<=index_2; i++)
|
||||||
{
|
{
|
||||||
//finishes the polygon
|
//finishes the polygon
|
||||||
if (i == index_2) {
|
if (i == index_2) {
|
||||||
polygon_1.add( new Wall(node_verts.get(index_2), node_verts.get(index_1)) );
|
polygon_1.add(new Wall(node_verts.get(index_2), node_verts.get(index_1)));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int next_index = i+1;
|
int next_index = i + 1;
|
||||||
if (next_index > node_verts.size()-1) next_index = 0;
|
if (next_index > node_verts.size() - 1) next_index = 0;
|
||||||
polygon_1.add(new Wall(node_verts.get(i), node_verts.get(next_index)));
|
polygon_1.add(new Wall(node_verts.get(i), node_verts.get(next_index)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//start from index_2 and go further until you hit index A. You are guaranteed to finish the polygon once you connect A and B.
|
|
||||||
int i = index_2;
|
int i = index_2;
|
||||||
boolean completedpolygon_2 = false;
|
boolean completedpolygon_2 = false;
|
||||||
while (!completedpolygon_2) {
|
while (!completedpolygon_2) {
|
||||||
|
|
||||||
if (i == index_1) {
|
if (i == index_1) {
|
||||||
polygon_2.add( new Wall(node_verts.get(index_1), node_verts.get(index_2)) );
|
polygon_2.add(new Wall(node_verts.get(index_1), node_verts.get(index_2)));
|
||||||
completedpolygon_2 = true;
|
completedpolygon_2 = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
int next_index = i + 1;
|
||||||
int next_index = i+1;
|
if (next_index > node_verts.size() - 1) next_index = 0;
|
||||||
if (next_index > node_verts.size()-1) next_index = 0;
|
polygon_2.add(new Wall(node_verts.get(i), node_verts.get(next_index)));
|
||||||
polygon_2.add( new Wall(node_verts.get(i), node_verts.get(next_index)) );
|
|
||||||
|
|
||||||
i = next_index;
|
i = next_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node nodeA = new Node(rec_stack_count+"A", polygon_1);
|
||||||
|
|
||||||
Node nodeA = new Node(recursionDepth+"A", polygon_1);
|
|
||||||
setIndices(nodeA);
|
setIndices(nodeA);
|
||||||
nodes.add(nodeA);
|
nodes.add(nodeA);
|
||||||
|
|
||||||
|
|
||||||
Node nodeB = new Node(recursionDepth+"B", polygon_2);
|
Node nodeB = new Node(rec_stack_count+"B", polygon_2);
|
||||||
setIndices(nodeB);
|
setIndices(nodeB);
|
||||||
nodes.add(nodeB);
|
nodes.add(nodeB);
|
||||||
|
|
||||||
|
|
||||||
|
rec_stack_count++;
|
||||||
|
if (rec_stack_count == maxDepth) return;
|
||||||
recursionDepth++;
|
|
||||||
if (recursionDepth == maxDepth) return;
|
|
||||||
|
|
||||||
if (findReflexVertex(polygon_1) != -1) {
|
if (findReflexVertex(polygon_1) != -1) {
|
||||||
nodes.remove(nodeA);
|
nodes.remove(nodeA);
|
||||||
|
@ -301,10 +296,13 @@ class NavMesh
|
||||||
void bake(Map map)
|
void bake(Map map)
|
||||||
{
|
{
|
||||||
//reset recursions and other values
|
//reset recursions and other values
|
||||||
recursionDepth = 0;
|
|
||||||
|
// to keep track of recursive calls
|
||||||
|
rec_stack_count = 0;
|
||||||
nodes.clear();
|
nodes.clear();
|
||||||
pointAmount = map.walls.size();
|
pointAmount = map.walls.size();
|
||||||
|
|
||||||
|
origin_map = map;
|
||||||
vert_lookup_map.clear();
|
vert_lookup_map.clear();
|
||||||
mapVectors.clear();
|
mapVectors.clear();
|
||||||
|
|
||||||
|
@ -317,8 +315,6 @@ class NavMesh
|
||||||
|
|
||||||
|
|
||||||
convexDecomposition(m);
|
convexDecomposition(m);
|
||||||
|
|
||||||
|
|
||||||
calculateAdjacencies();
|
calculateAdjacencies();
|
||||||
|
|
||||||
|
|
||||||
|
@ -431,9 +427,12 @@ class NavMesh
|
||||||
{
|
{
|
||||||
stroke(0,255,255);
|
stroke(0,255,255);
|
||||||
strokeWeight(3);
|
strokeWeight(3);
|
||||||
line(w.start.x, w.start.y, w.end.x, w.end.y);
|
line(w.start.x, w.start.y, w.end.x, w.end.y);
|
||||||
|
|
||||||
//w.draw();
|
//w.draw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue