Beispiel #1
0
    public void Trigger(IDetector detector, SceneSeparateTreeType treeType, TriggerHandle <T> handle)
    {
        if (handle == null)
        {
            return;
        }

        int code = detector.DetectedCode(m_Bounds, treeType);

        for (int i = 0; i < m_ChildNodes.Length; i++)
        {
            var node = m_ChildNodes[i];
            if (node != null && (code & (1 << i)) != 0)
            {
                node.Trigger(detector, treeType, handle);
            }
        }

        //if (detector.IsDetected(m_Bounds))
        {
            var node = m_ObjectList.First;
            while (node != null)
            {
                if (detector.IsDetected(node.Value.Bounds))
                {
                    handle(node.Value);
                }
                node = node.Next;
            }
            //for (int i = 0; i < m_ObjectList.Count; i++)
            //{
            //    if (m_ObjectList[i] != null)
            //    {
            //        if (detector.IsDetected(m_ObjectList[i].Bounds))
            //            handle(m_ObjectList[i]);
            //    }
            //}
        }
    }