#ifndef _atomImport
#define _atomImport
#include <map>
#include <maya/MPxFileTranslator.h>
#include <maya/MSelectionList.h>
#include <maya/MFnDependencyNode.h>
#include <maya/MTime.h>
#include <maya/MAnimCurveClipboardItemArray.h>
#include "atomFileUtils.h"
#include "atomCachedPlugs.h"
#include "atomAnimLayers.h"
class atomNodeNameReplacer;
class atomEditsHelper {
public:
atomEditsHelper(atomNodeNameReplacer* replacer, atomTemplateReader* templateReader): fReplacer(replacer), fTemplateReader(templateReader) {}
virtual ~atomEditsHelper() {}
atomNodeNameReplacer* fReplacer;
atomTemplateReader* fTemplateReader;
};
public:
atomImport ();
virtual ~atomImport ();
static void * creator ();
FileAccessMode mode);
const char* buffer,
short size) const;
static void connectionFailedCallback(
MPlug& srcPlug,
void* clientData);
private:
atomTemplateReader &, bool replaceLayers);
static bool replaceNameAndFindPlug(
const MString&,
atomNodeNameReplacer&,
static bool checkPlugAgainstTemplate(
const MString&,
atomTemplateReader*);
private:
atomReader fReader;
};
class atomWriter;
public:
atomExport ();
virtual ~atomExport ();
static void * creator ();
FileAccessMode mode );
const char* buffer,
short size) const;
private:
std::set<std::string> &attrStrings,bool includeChildren,
bool useSpecifiedTimes,
MTime &startTime,
bool statics, bool cached, bool sdk, bool constraint, bool layers,
atomTemplateReader &reader);
void writeStaticAndCached (
MPlugArray &animtablePlugs, atomCachedPlugs *cachedPlugs,
bool statics,
bool cached,ofstream &animFile,
std::set<std::string> &attrStrings,
unsigned int childCount,bool &hasAnimatable,
atomTemplateReader &reader);
MStatus writeAnimCurves(ofstream &animFile,
MString &nodeName,atomCachedPlugs *cachedPlugs,atomNodeWithAnimLayers *layerPlugs,
MString &command,
bool &haveAnimatedCurves, atomTemplateReader &reader);
bool setUpCache(
MSelectionList &sList, std::vector<atomCachedPlugs *> &cachedPlugs,atomAnimLayers &animLayers,
bool sdk, bool constraint, bool layers,
std::set<std::string> &attrStrings, atomTemplateReader &templateReader,
bool setUpAnimLayers(
MSelectionList &sList,atomAnimLayers &animLayers,
std::vector<atomNodeWithAnimLayers *> &nodesWithAnimLayers,
std::set<std::string> &attrStrings, atomTemplateReader &templateReader);
atomWriter fWriter;
};
#endif