public Vector3 GetBlockCenter(Vector3 query, int level, IBlock block) { if (level == block.Level - 1) { int id = BlockUtility.FindSubArea(block, query); return(BlockUtility.ChildPositions(block)[id]); } else { int id = BlockUtility.FindSubArea(block, query); Vector3 subcenter = BlockUtility.ChildPositions(block)[id]; IBlock b = new SimpleBlock(subcenter, block.Level - 1); return(GetBlockCenter(query, level, b)); } }