//------------------------------------------------------------------------------- //------------------------------------------------------------------------------- public bool Search(SearchFunctionDelegate <T> searchFunc, object data, out T[] aObjects) { bool bFound = false; aObjects = null; if (m_nDepth <= m_nMaxDepth) { foreach (OctTreeNode <T> childNode in this) { if (searchFunc != null) { if (searchFunc(childNode, data)) { bFound = childNode.Search(searchFunc, data, out aObjects); if (m_nDepth == m_nMaxDepth) { aObjects = GetObjectTypeList(); } break; } } } } return(bFound); }
public ProximityMap(SearchFunctionDelegate <T> searchFunc, AddObjectsFunctionDelegate <T> findFunc, float fWorldSize, int nMaxDepth, Vector3 v3Center, object searchableData, GraphicsDevice device) { m_searchFunc = searchFunc; m_findFunc = findFunc; OctTreeNode <T> .InitialiseGraphics(device); m_octreeRoot = new OctTreeNode <T>(nMaxDepth, 0, fWorldSize, v3Center, findFunc, searchableData); }