00001 /********************************************************************** 00002 FILE: ITrackSet.h 00003 00004 DESCRIPTION: 00005 Interfaces for track sets 00006 00007 HISTORY: 00008 leonarni|Feb.23.2005 - creation 00009 00010 Copyright (c) 2005, All Rights Reserved. 00011 **********************************************************************/ 00012 00013 #pragma once 00014 00015 #include "iFnPub.h" 00016 // forward declarations 00017 class Animatable; 00018 class INode; 00019 00021 #define IID_ANIM_TRACK Interface_ID(0x481f0fff, 0x520478f5) 00022 00024 00033 class IAnimTrack: public FPMixinInterface 00034 { 00035 public: 00036 // Function Publishing System 00037 enum { 00038 get_node, 00039 sub_anim_count, 00040 get_sub_anim, 00041 get_sub_anim_index, 00042 get_path_name, 00043 set 00044 }; 00045 00046 public: 00049 virtual INode* GetNode() const = 0; 00053 virtual int SubAnimCount() const = 0; 00058 virtual Animatable* GetSubAnim(int index) const = 0; 00063 virtual int GetSubAnimIndex(int index) const = 0; 00066 virtual const MSTR& GetPathName() const = 0; 00071 virtual void Set(MCHAR* pathname) = 0; 00072 00075 virtual Control* GetLeafController() const = 0; 00076 00077 using FPMixinInterface::GetInterface; 00082 static IAnimTrack* GetInterface(InterfaceServer& is) { 00083 return static_cast<IAnimTrack*>(is.GetInterface(IID_ANIM_TRACK)); 00084 }; 00085 00086 // From FPMixinInterface 00087 FPInterfaceDesc* GetDesc(); // Must implement 00088 }; 00089