bool DetectChangeInObstacles()
{
bool result = true;
if (detectionCounter < 50)
{
result = false;
detectionCounter++;
}
else
{
//Debug.Log ("Times up");
detectionCounter = 0;
}
if (result)
{
differentObjects.Clear();
var newObstacles = new List<ObjectInfo>();
var obstacles = GameObject.FindGameObjectsWithTag("wall");
foreach (GameObject go in obstacles)
{
newObstacles.Add(new ObjectInfo(go.transform.position, go.transform.localScale, go.name));
}
if (newObstacles.Count != oldObstacles.Count)
{
Debug.Log ("Obstacle count differs");
if (oldObstacles.Count > newObstacles.Count)
{
Debug.Log ("Old > new");
foreach (ObjectInfo oi1 in oldObstacles)
{
bool found = false;
foreach (ObjectInfo oi2 in newObstacles)
{
if (oi2.position == oi1.position)
found = true;
}
if (!found)
differentObjects.Add(oi1);
}
}
else
{
Debug.Log ("Old < new");
foreach (ObjectInfo oi1 in newObstacles)
{
bool found = false;
foreach (ObjectInfo oi2 in oldObstacles)
{
if (oi2.position == oi1.position)
found = true;
}
if (!found)
differentObjects.Add(oi1);
}
}
result = true;
}
else
result = false;
int counter = 0;
if (!result)
{
for (; counter < newObstacles.Count; counter++)
{
ObjectInfo oldObject = oldObstacles[counter];
ObjectInfo newObject = newObstacles[counter];
newObject.moved = false;
if (oldObject.position != newObject.position)
{
newObject.moved = true;
newObject.oldPosition = oldObject.position;
result = true;
differentObjects.Add(newObject);
}
else if (oldObject.scale != newObject.scale)
{
result = true;
differentObjects.Add(newObject);
}
}
}
//Debug.Log ("change in obstacles: " + result + " map generator done: " + Generator.generatorDone + " quadtree generation done: " + generationDone );
}
return result;
}