Changeset 934
- Timestamp:
- 09/05/08 18:11:19
- Files:
-
- trunk/include/vpb/DataSet (modified) (1 diff)
- trunk/src/vpb/DataSet.cpp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/include/vpb/DataSet
r932 r934 178 178 void _writeNodeFile(const osg::Node& node,const std::string& filename); 179 179 void _writeImageFile(const osg::Image& image,const std::string& filename); 180 180 void _writeNodeFileAndImages(const osg::Node& node,const std::string& filename); 181 181 182 void setState(osg::State* state) { _state = state; } 182 183 osg::State* getState() { return _state.get(); } trunk/src/vpb/DataSet.cpp
r932 r934 1499 1499 } 1500 1500 1501 1502 1501 class WriteImageFilesVisitor : public osg::NodeVisitor 1503 1502 { … … 1530 1529 } 1531 1530 1531 1532 void writeLayer(osgTerrain::Layer* layer) 1533 { 1534 if (!layer) return; 1535 1536 osgTerrain::ImageLayer* imageLayer = dynamic_cast<osgTerrain::ImageLayer*>(layer); 1537 if (imageLayer) 1538 { 1539 osg::Image* image = imageLayer->getImage(); 1540 if (image) 1541 { 1542 osg::notify(osg::NOTICE)<<"Writing out image layer "<<image->getFileName()<<std::endl; 1543 _dataSet->_writeImageFile(*image,(_dataSet->getDirectory()+image->getFileName()).c_str()); 1544 } 1545 return; 1546 } 1547 1548 osgTerrain::SwitchLayer* switchLayer = dynamic_cast<osgTerrain::SwitchLayer*>(layer); 1549 if (switchLayer) 1550 { 1551 for(unsigned int i=0; i<switchLayer->getNumLayers(); ++i) 1552 { 1553 osg::notify(osg::NOTICE)<<"Writing out switch layer child: "<<switchLayer->getSetName(i)<<", "<<switchLayer->getFileName(i)<<std::endl; 1554 writeLayer(switchLayer->getLayer(i)); 1555 } 1556 return; 1557 } 1558 1559 osgTerrain::CompositeLayer* compositeLayer = dynamic_cast<osgTerrain::CompositeLayer*>(layer); 1560 if (compositeLayer) 1561 { 1562 for(unsigned int i=0; i<compositeLayer->getNumLayers(); ++i) 1563 { 1564 osg::notify(osg::NOTICE)<<"Writing out composite layer child: "<<compositeLayer->getFileName(i)<<std::endl; 1565 writeLayer(compositeLayer->getLayer(i)); 1566 } 1567 return; 1568 } 1569 } 1570 1532 1571 void applyTerrain(osgTerrain::TerrainTile& terrainTile) 1533 1572 { 1534 if (terrainTile.getStateSet()) apply(*(terrainTile.getStateSet())); 1535 1536 // need to iterator through images stored in layers 1573 #if 0 1574 if (terrainTile.getElevationLayer()) writeLayer(terrainTile.getElevationLayer()); 1575 #endif 1576 1577 for(unsigned int i=0; i<terrainTile.getNumColorLayers(); ++i) 1578 { 1579 if (terrainTile.getColorLayer(i)) 1580 { 1581 writeLayer(terrainTile.getColorLayer(i)); 1582 } 1583 } 1537 1584 } 1538 1585 … … 1565 1612 }; 1566 1613 1614 void DataSet::_writeNodeFileAndImages(const osg::Node& node,const std::string& filename) 1615 { 1616 if (getDisableWrites()) return; 1617 1618 if (getDestinationTileExtension()==".osg") 1619 { 1620 WriteImageFilesVisitor wifv(this); 1621 const_cast<osg::Node&>(node).accept(wifv); 1622 } 1623 1624 _writeNodeFile(node,filename); 1625 } 1626 1627 1628 1567 1629 class WriteOperation : public BuildOperation 1568 1630 { … … 1584 1646 if (_buildLog.valid()) _buildLog->log(osg::NOTICE, " writeSubTile filename= %s",_filename.c_str()); 1585 1647 1586 _dataset->_writeNodeFile(*node,_filename); 1587 1588 if (_dataset->getDestinationTileExtension()==".osg") 1589 { 1590 WriteImageFilesVisitor wifv(_dataset); 1591 node->accept(wifv); 1592 } 1648 _dataset->_writeNodeFileAndImages(*node,_filename); 1593 1649 1594 1650 _cd->setSubTilesGenerated(true); … … 1634 1690 { 1635 1691 log(osg::NOTICE, " writeSubTile filename= %s",filename.c_str()); 1636 _writeNodeFile(*node,filename); 1637 1638 if (_tileExtension==".osg") 1639 { 1640 WriteImageFilesVisitor wifv(this); 1641 node->accept(wifv); 1642 } 1692 _writeNodeFileAndImages(*node,filename); 1693 1643 1694 1644 1695 parent->setSubTilesGenerated(true); … … 1685 1736 { 1686 1737 log(osg::NOTICE, " writeNodeFile = %u X=%u Y=%u filename=%s",cd->_level,cd->_tileX,cd->_tileY,filename.c_str()); 1687 _writeNodeFile(*node,filename); 1688 1689 if (_tileExtension==".osg") 1690 { 1691 WriteImageFilesVisitor wifv(this); 1692 node->accept(wifv); 1693 } 1738 _writeNodeFileAndImages(*node,filename); 1694 1739 } 1695 1740 else … … 1821 1866 if (writeToDisk) 1822 1867 { 1823 _writeNodeFile(*_rootNode,filename); 1824 if (_tileExtension==".osg") 1825 { 1826 WriteImageFilesVisitor wifv(this); 1827 _rootNode->accept(wifv); 1828 } 1868 _writeNodeFileAndImages(*_rootNode,filename); 1829 1869 } 1830 1870 }
