QuadTree.DetectChangeInObstacles C# (CSharp) Method

DetectChangeInObstacles() private method

private DetectChangeInObstacles ( ) : bool
return bool
    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;
    }