IMixer8.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 the new Mixer interfaces
00012 // AUTHOR: Michael Zyracki created 2005
00013 //***************************************************************************/
00014 
00015 #pragma once
00016 #include "..\maxheap.h"
00017 #include "IMixer.h"
00018 #include "BipedApi.h"
00019 #include "..\ILoadSaveAnimation.h"
00020 
00023 #define MAXMOTIONCLIPIMP_CONTROL_CLASS_ID   Class_ID(0x57a52b8c, 0x30935afc)
00024 
00025 
00026 #define CLIPASSOCIATION_CONTROL_CLASS_ID    Class_ID(0x71313526, 0x28696f6a)
00027 
00029 
00035 class IMXclip8 : public IMXclip
00036 {
00037 public:
00040     virtual bool IsMax() = 0;
00041 
00044     virtual const MaxSDK::AssetManagement::AssetUser & MaxMap() =0;
00045 
00055     virtual bool LoadMaxAnimationFile(int loadOption,const MCHAR *filename, const MCHAR *mapfilename=NULL) =0;
00056 
00058 
00059 
00061     
00064     virtual void GetVelocityBlends(INodeTab &nodeTab) =0;
00065     
00067 
00070     virtual void SetVelocityBlends(const INodeTab &nodeTab) =0;
00072 
00074 
00075 
00077 
00080     virtual void GetSubBlendNodes(INodeTab &nodeTab) =0;
00081 
00083 
00086     virtual void SetSubBlendNodes(const INodeTab &nodeTab) =0;
00087 
00089 
00091     virtual void GetSubBlendNodesParents(INodeTab &nodeTab) =0;
00092 
00094 
00097     virtual void SetSubBlendNodesParents(const INodeTab &nodeTab) =0;
00099 
00104     virtual void SetTransitionYawPitchRoll(const bool yaw, const bool pitch,const bool roll) =0;
00105 
00110     virtual void GetTransitionYawPitchRoll(bool &yaw, bool &pitch, bool &roll) =0;
00111 
00116     virtual void SetTransitionYawPitchRollAngle(const float yaw, const float pitch,const float roll) =0;
00117 
00122     virtual void GetTransitionYawPitchRollAngle(float &yaw, float &pitch, float &roll) =0;
00123 
00128     virtual void SetTransitionXYZ(const bool x, const bool y,const bool z) =0;
00129 
00134     virtual void GetTransitionXYZ(bool &x, bool &y, bool &z) =0;
00135 
00136 
00137 
00138 };
00139 
00140 
00142 
00146 class IMXtrack8 : public IMXtrack
00147 {
00148 public:
00149 
00156     
00157     virtual IMXclip8 *GetClip8(int index, int row)=0;
00158     
00164     virtual IMXclip8 *GetTransClip8(int index)=0;
00165 
00168     virtual bool IsMax() = 0;
00169 
00178     virtual bool AppendMaxClip(const MCHAR *fname, const MCHAR *mapFile = NULL, int interval = 5)=0;
00179 
00180 };
00181 
00182 
00185 
00189 class IMXtrackgroup8 : public IMXtrackgroup
00190 {
00191 public:
00192 
00195     virtual bool IsMax() = 0;
00196 
00201     virtual IMXtrack8 *GetTrack8(int index)=0;
00202 
00203 
00206     virtual void GetMaxFilter(INodeTab &nodeTab) =0;
00207     
00210     virtual void SetMaxFilter(const INodeTab &nodeTab) =0;
00211 
00212 };
00213 
00216 
00222 class IMixer8 :public IMixer
00223 {
00224 
00225 public:
00228     virtual bool IsMax() = 0;
00229 
00234     virtual IMXtrackgroup8 *GetTrackgroup8(int index)=0;    
00235 
00242     virtual void SetNodes(INodeTab &nodeTab,BOOL collapse) =0;
00243 
00246     virtual void GetNodes(INodeTab &nodeTab)=0;
00247 
00250     virtual const MCHAR *GetName() = 0;
00251     
00257     virtual bool SetName(const MCHAR *name) =0;
00258 
00259 };
00260 
00262 
00265 class MaxMixerManager: public MaxHeapOperators
00266 {
00267 public:
00269     virtual ~MaxMixerManager() {;}
00270 
00273     BIPExport int NumMaxMixers();
00274     
00279     BIPExport IMixer8 *GetNthMaxMixer(int index);
00280     
00284     BIPExport IMixer8 *GetMaxMixer(INode *node);
00285 
00295     BIPExport void RemoveNthMaxMixer(int index,BOOL collapse,BOOL keyperframe);
00296     
00303     BIPExport bool AddMaxMixer(INodeTab &nodes, const MCHAR *nameOfMix);
00304     
00315     BIPExport bool AddMaxMixer(Tab<NodeAndAnims> &nodeAnims,const MCHAR *nameOfMix);
00316 
00317 };
00318 
00320 extern BIPExport MaxMixerManager TheMaxMixerManager;
00321 
00322 
00323 
00324 
00325