ILoadSaveAnimation.h

Go to the documentation of this file.
00001 /*==============================================================================
00002 // Copyright (c) 1998-2005 Autodesk, Inc.
00003 // All rights reserved.
00004 // 
00005 // These coded instructions, statements, and computer programs contain
00006 // unpublished proprietary information written by Autodesk, Inc., and are
00007 // protected by Federal copyright law. They may not be disclosed to third
00008 // parties or copied or duplicated in any form, in whole or in part, without
00009 // the prior written consent of Autodesk, Inc.
00010 //**************************************************************************/
00011 // DESCRIPTION: Interface to Load Save Animation Interfaces
00012 // AUTHOR: Michael Zyracki created 2005
00013 //***************************************************************************/
00014 
00015 #pragma once
00016 #include "Maxapi.h"
00017 #include "maxheap.h"
00018 #include "ifnpub.h"
00019 #include "iparamb2.h"
00020 #include "XMLAnimTreeEntry.h"
00021 
00022 
00024 
00030 class LoadSaveRetargetData: public MaxHeapOperators
00031 {
00032     public:
00033 
00035     LoadSaveRetargetData():absolute(TRUE){};
00036 
00037     // !\brief Deconstructor
00038     ~LoadSaveRetargetData(){}
00039 
00040     // !\brief The name of the node in the scene that's being mapped.  This must be set.
00041     MSTR currentNodeName;
00042 
00046     MSTR incomingNodeName;
00047     
00050     BOOL absolute;
00051     
00054     Point3 scale; 
00055 
00056 
00060     MSTR currentBase;
00061 
00064     MSTR incomingBase;
00065 
00070     MSTR currentBaseChain;
00071 
00075     MSTR currentEndChain;
00076 
00077 
00080     MSTR incomingBaseChain;
00081 
00085     MSTR incomingEndChain;
00086 
00087 
00090     BOOL FKRetargetingEnabled; 
00091     
00096     MSTR FKChainBase;
00097 
00098 };
00099 
00100 
00104 #define ILOADSAVEANIMATION_INTERFACE Interface_ID(0x7e1b6067, 0x6f470508)
00105 
00107 #define GetILoadSaveAnimation() static_cast<ILoadSaveAnimation*>(GetCOREInterface(ILOADSAVEANIMATION_INTERFACE))
00108 
00109 
00111 
00115 class ILoadSaveAnimation : public FPStaticInterface {
00116 
00117 public:
00118 
00120 
00121 
00123     
00128     enum NodeMapType{ eMatchExactName=0, eMatchClosestName=1,eMatchHierarchy=2};
00129 
00132 
00137     enum SaveFlags {eAnimatedTracks = 0x1, eIncludeConstraints = 0x2, eKeyableTracks = 0x4,eSaveSeg = 0x8, 
00138         eSegPerFrame = 0x10};
00139 
00142     
00151     enum LoadFlags {eRelative = 0x1,eInsert = 0x2, eStripLayers = 0x4, eIncludePB2s = 0x8};
00152 
00155 
00160     enum MapFlags {eMapControllerExactName = 0x1,eMapControllerType = 0x2,eStripLayersInMap = 0x4};
00162 
00163 
00165 
00166 
00168 
00169     virtual const MCHAR* SaveAnimationDlg() const =0;
00170 
00172 
00173     virtual const MCHAR* LoadAnimationDlg() const =0;
00174 
00176 
00181 
00182     virtual BOOL GetLoadAndMapFileFromDlg(MCHAR fileName[MAX_PATH],MCHAR mapFileName[MAX_PATH]) const =0;
00183 
00185     
00189     virtual BOOL GetMultLoadAndMapFileFromDlg(Tab<MSTR*> &names, MCHAR *mapName) const = 0;
00191 
00192 
00194 
00195 
00197     
00200 
00218 
00219     virtual BOOL SaveAnimation(const MCHAR *filename, Tab<INode *> &nodes,Tab<MSTR*> &userAttributes,Tab<MSTR*> &userValues,
00220         DWORD saveFlag, 
00221         Interval &segInterval) const = 0;
00222     
00224     
00227 
00236 
00247 
00248 
00251 
00253 
00254 
00256 
00259 
00273 
00274 
00278 
00281 
00295 
00296 
00299 
00301 
00302 
00304 
00327 
00332 
00356 
00360 
00362 
00370 
00374 
00375 
00378 
00382 
00386 
00389 
00392 
00395 
00398 
00402 
00406 
00410 
00412 
00415 
00416 
00418 
00427 
00430 
00437 
00440 
00445 
00447 
00449 
00453 
00456 
00460 
00466 
00480 
00484 
00490 
00493 
00504 
00508 
00515 
00518 
00528 
00533 
00538 
00542 
00545 
00548 
00551 
00556 
00564 
00567 
00571