MCPcopy Create free account
hub / github.com/OGRECave/ogre-next / updateAllTransforms

Method updateAllTransforms

OgreMain/src/OgreSceneManager.cpp:1794–1842  ·  view source on GitHub ↗

-----------------------------------------------------------------------

Source from the content-addressed store, hash-verified

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 {

Callers

nothing calls this directly

Calls 7

nodeUpdatedMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
getNumDepthsMethod · 0.45
getFirstNodeMethod · 0.45
getListenerMethod · 0.45

Tested by

no test coverage detected