//- // ========================================================================== // Copyright (C) 1995 - 2006 Autodesk, Inc. and/or its licensors. All // rights reserved. // // The coded instructions, statements, computer programs, and/or related // material (collectively the "Data") in these files contain unpublished // information proprietary to Autodesk, Inc. ("Autodesk") and/or its // licensors, which is protected by U.S. and Canadian federal copyright // law and by international treaties. // // The Data is provided for use exclusively by You. You have the right // to use, modify, and incorporate this Data into other products for // purposes authorized by the Autodesk software license agreement, // without fee. // // The copyright notices in the Software and this entire statement, // including the above license grant, this restriction and the // following disclaimer, must be included in all copies of the // Software, in whole or in part, and all derivative works of // the Software, unless such copies or derivative works are solely // in the form of machine-executable object code generated by a // source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. // AUTODESK DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED // WARRANTIES INCLUDING, BUT NOT LIMITED TO, THE WARRANTIES OF // NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR // PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE, OR // TRADE PRACTICE. IN NO EVENT WILL AUTODESK AND/OR ITS LICENSORS // BE LIABLE FOR ANY LOST REVENUES, DATA, OR PROFITS, OR SPECIAL, // DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES, EVEN IF AUTODESK // AND/OR ITS LICENSORS HAS BEEN ADVISED OF THE POSSIBILITY // OR PROBABILITY OF SUCH DAMAGES. // // ========================================================================== //+ // // //polyX3DExporter.cpp #include #include #include #include #include #include "polyX3DExporter.h" #include "polyX3DWriter.h" //Macros // //XML header related info #define XMLVERSION 1.0 #define XMLENCODING "UTF-8" polyX3DExporter::~polyX3DExporter() { //Summary: destructor method - does nothing // } void* polyX3DExporter::creator() //Summary: allows Maya to allocate an instance of this object { return new polyX3DExporter(); } MString polyX3DExporter::defaultExtension () const //Summary: called when Maya needs to know the preferred extension of this file // format. For example, if the user tries to save a file called // "test" using the Save As dialog, Maya will call this method and // actually save it as "test.x3d". Note that the period should *not* // be included in the extension. //Returns: "x3d" { return MString("x3d"); } MStatus initializePlugin(MObject obj) //Summary: registers the commands, tools, devices, and so on, defined by the // plug-in with Maya //Returns: MStatus::kSuccess if the registration was successful; // MStatus::kFailure otherwise { MStatus status; MFnPlugin plugin(obj, PLUGIN_COMPANY, "4.5", "Any"); // Register the translator with the system // status = plugin.registerFileTranslator("X3D", "", polyX3DExporter::creator, "", "option1=1", true); if (!status) { status.perror("registerFileTranslator"); return status; } return status; } MStatus uninitializePlugin(MObject obj) //Summary: deregisters the commands, tools, devices, and so on, defined by the // plug-in //Returns: MStatus::kSuccess if the deregistration was successful; // MStatus::kFailure otherwise { MStatus status; MFnPlugin plugin( obj ); status = plugin.deregisterFileTranslator("X3D"); if (!status) { status.perror("deregisterFileTranslator"); return status; } return status; } void polyX3DExporter::writeHeader(ostream& os) //Summary: outputs the required opening X3D tags //Args : os - an output stream to write to { //output required tags: XML, X3D, and Scene // os << "\n" << "\n" << "\n" << "\t\n"; } void polyX3DExporter::writeFooter(ostream& os) //Summary: outputs the required closing X3D tags //Args : os - an output stream to write to { os << "\t\n" << "\n"; } polyWriter* polyX3DExporter::createPolyWriter(const MDagPath dagPath, MStatus& status) //Summary: creates a polyWriter for the X3D export file type //Args : dagPath - the current polygon dag path // status - will be set to MStatus::kSuccess if the polyWriter was // created successfully; MStatus::kFailure otherwise //Returns: pointer to the new polyWriter object { return new polyX3DWriter(dagPath, status); }