Files
OpenSceneGraph/src/osgPlugins/dae/ReaderWriterDAE.h
Robert Osfield 232bda3828 From Oren Fromberg, ""
--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
2012-10-08 11:54:40 +00:00

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