-----------------------------------------------------------------------
| 1792 | } |
| 1793 | //----------------------------------------------------------------------- |
| 1794 | void SceneManager::updateAllTransforms() |
| 1795 | { |
| 1796 | mRequestType = UPDATE_ALL_TRANSFORMS; |
| 1797 | NodeMemoryManagerVec::const_iterator it = mNodeMemoryManagerUpdateList.begin(); |
| 1798 | NodeMemoryManagerVec::const_iterator en = mNodeMemoryManagerUpdateList.end(); |
| 1799 | |
| 1800 | while( it != en ) |
| 1801 | { |
| 1802 | NodeMemoryManager *nodeMemoryManager = *it; |
| 1803 | const size_t numDepths = nodeMemoryManager->getNumDepths(); |
| 1804 | |
| 1805 | size_t start = nodeMemoryManager->getMemoryManagerType() == SCENE_STATIC |
| 1806 | ? mStaticMinDepthLevelDirty |
| 1807 | : 0; |
| 1808 | |
| 1809 | // Start from the zeroth level (root) unless static (start from first dirty) |
| 1810 | for( size_t i = start; i < numDepths; ++i ) |
| 1811 | { |
| 1812 | Transform t; |
| 1813 | const size_t numNodes = nodeMemoryManager->getFirstNode( t, i ); |
| 1814 | |
| 1815 | // nodesPerThread must be multiple of ARRAY_PACKED_REALS |
| 1816 | size_t nodesPerThread = ( numNodes + ( mNumWorkerThreads - 1 ) ) / mNumWorkerThreads; |
| 1817 | nodesPerThread = ( ( nodesPerThread + ARRAY_PACKED_REALS - 1 ) / ARRAY_PACKED_REALS ) * |
| 1818 | ARRAY_PACKED_REALS; |
| 1819 | |
| 1820 | if( numNodes ) |
| 1821 | { |
| 1822 | // Send them to worker threads. We need to go depth by depth because |
| 1823 | // we may depend on parents which could be processed by different threads. |
| 1824 | mUpdateTransformRequest = UpdateTransformRequest( t, nodesPerThread, numNodes ); |
| 1825 | fireWorkerThreadsAndWait(); |
| 1826 | // Node::updateAllTransforms( numNodes, t ); |
| 1827 | } |
| 1828 | } |
| 1829 | |
| 1830 | ++it; |
| 1831 | } |
| 1832 | |
| 1833 | // Call all listeners |
| 1834 | SceneNodeList::const_iterator itor = mSceneNodesWithListeners.begin(); |
| 1835 | SceneNodeList::const_iterator endt = mSceneNodesWithListeners.end(); |
| 1836 | |
| 1837 | while( itor != endt ) |
| 1838 | { |
| 1839 | ( *itor )->getListener()->nodeUpdated( *itor ); |
| 1840 | ++itor; |
| 1841 | } |
| 1842 | } |
| 1843 | //----------------------------------------------------------------------- |
| 1844 | void SceneManager::updateAllTagPoints() |
| 1845 | { |
nothing calls this directly
no test coverage detected