--This line, and thosAttached is an update to ReaderWriterDAE.cpp/h and daeReader.cpp/h that implements osgDB::ReaderWriter::ReadResult ReaderWriterDAE::readNode (std::istream&, const osgDB::ReaderWriter::Options*) This virtual function had never been implemented in ReaderWriterDAE. I implemented this function because the DAE plugin could not load files from other ReaderWriter derived objects that use protocol handlers. I have updated function declarations in the header to have identical signatures with the base class declarations that include the default parameter. readNode (std::istream&, …) is nearly identical to readNode(const std::string &, …) except it uses a new private function to convert the file from standard input: bool daeReader::convert( std::istream& fin ) When this function is called fileURI is the string “from std::istream” to make the user aware where the file is coming from. Then instead of calling _dae->open(fileURI) we call _dae->openFromMemory(fileURI, buffer.data()) Where buffer.data() is a pointer to the dae file text in memory. Other changes include private functions to clear caches and to consolidate redundant code that appears between the two convert functions. e below, will be ignored-- M src/osgPlugins/dae/ReaderWriterDAE.cpp M src/osgPlugins/dae/daeReader.cpp M src/osgPlugins/dae/ReaderWriterDAE.h M src/osgPlugins/dae/daeReader.h
56 lines
3.2 KiB
C++
56 lines
3.2 KiB
C++
#ifndef _READERWRITERDAE_H_
|
|
#define _READERWRITERDAE_H_
|
|
|
|
|
|
#include <OpenThreads/ReentrantMutex>
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
// OSG reader/writer plugin for the COLLADA 1.4.x ".dae" format.
|
|
// See http://collada.org/ and http://khronos.org/collada/
|
|
|
|
class ReaderWriterDAE : public osgDB::ReaderWriter
|
|
{
|
|
public:
|
|
ReaderWriterDAE()
|
|
{
|
|
// Collada document
|
|
supportsExtension("dae","COLLADA 1.4.x DAE format");
|
|
// Collada zip archive (contains one or more dae files and a manifest.xml)
|
|
supportsExtension("zae","COLLADA 1.4.x ZAE format");
|
|
|
|
supportsOption("polygon", "(Write option) Use polygons instead of polylists for element");
|
|
supportsOption("GoogleMode", "(Write option) Write files suitable for use by Google products");
|
|
supportsOption("NoExtras", "(Write option) Undocumented");
|
|
supportsOption("daeEarthTex", "(Write option) DAE settings for writing earth textures");
|
|
supportsOption("daeZUpAxis", "(Write option) Indicates the up axis is Z instead of Y");
|
|
supportsOption("daeLinkOriginalTexturesNoForce", "(Write option) Writes reference to the original image if found, instead of writing the image in memory");
|
|
supportsOption("daeLinkOriginalTexturesForce", "(Write option) Writes reference to the original image even if not found, instead of writing the image in memory");
|
|
supportsOption("daeNamesUseCodepage", "(Write option) All names except filenames (materials, animation, geometries...) should be considered as encoded using current codepage (UTF8 if not). Filenames follow OSG_USE_UTF8_FILENAME.");
|
|
|
|
supportsOption("StrictTransparency", "(Read option) Undocumented");
|
|
supportsOption("daeTessellateNone", "(Read option) Do not tessellate at all (Polygons are stored as GL_POLYGON - not suitable for concave polygons)");
|
|
supportsOption("daeTessellatePolygonsAsTriFans", "(Read option) Tessellate the old way (default), interpreting polygons as triangle fans (faster, but does not work for concave polygons)");
|
|
supportsOption("daeTessellatePolygons", "(Read option) Use full tessellation of polygons (slower, works for concave polygons)");
|
|
supportsOption("daeUsePredefinedTextureUnits", "(Read option) Texture units have fixed uses (0: ambient occlusion, 1: main texture...). May create non contiguous units (default).");
|
|
supportsOption("daeUsePredefinedTextureUnits", "(Read option) Texture units are created in sequence (contiguous units).");
|
|
}
|
|
|
|
const char* className() const { return "COLLADA 1.4.x DAE reader/writer"; }
|
|
|
|
ReadResult readNode(std::istream&, const Options* = NULL) const;
|
|
ReadResult readNode(const std::string&, const Options* = NULL) const;
|
|
|
|
WriteResult writeNode(const osg::Node&, const std::string&, const Options* = NULL) const;
|
|
|
|
static std::string ConvertFilePathToColladaCompatibleURI(const std::string& FilePath);
|
|
static std::string ConvertColladaCompatibleURIToFilePath(const std::string& uri);
|
|
|
|
private:
|
|
mutable OpenThreads::ReentrantMutex _serializerMutex;
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif
|
|
|