ipointcache.h

Go to the documentation of this file.
00001 //-------------------------------------------------------------
00002 // Access to Point Cache
00003 //
00004 
00005 
00006 #pragma once
00007 
00008 #include "iFnPub.h"
00009 
00010 //new class IDs
00011 
00012 #define POINTCACHEOSM_CLASS_ID  Class_ID(0x270f1fe3, 0x3b14999)
00013 #define POINTCACHEWSM_CLASS_ID  Class_ID(0x370f1fe3, 0x3b14999)
00014 
00015 #define POINTCACHE_CLASS POINTCACHEOSM_CLASS_ID
00016 
00017 //deprecated class IDS..
00018 #define OLDPOINTCACHE_CLASS_ID  Class_ID(0x21d07ae1, 0x48d30bec)
00019 #define OLDPOINTCACHEWSM_CLASS_ID   Class_ID(0x21d07ae1, 0x48d30bed)
00020 #define OLDPARTICLECACHE_CLASS_ID   Class_ID(0x21d07ae1, 0x48d30bee)
00021 
00022 
00023 
00024 
00025 class IPointCache;
00026 class IPointCacheWSM;
00027 class IParticleCache;
00028 
00029 //***************************************************************
00030 //Function Publishing System stuff   
00031 //****************************************************************
00032 #define POINTCACHE_INTERFACE Interface_ID(0x53b4409b, 0x18ee7cc8)
00033 
00034 #define GetIPointCacheInterface(cd) \
00035             (IPointCache *)(cd)->GetInterface(POINTCACHE_INTERFACE)
00036 
00037 #define POINTCACHEWSM_INTERFACE Interface_ID(0x53b4409b, 0x18ee7cc9)
00038 
00039 #define GetIPointCacheWSMInterface(cd) \
00040             (IPointCacheWSM *)(cd)->GetInterface(POINTCACHEWSM_INTERFACE)
00041 
00042 #define PARTICLECACHE_INTERFACE Interface_ID(0x53b4409b, 0x18ee7cd0)
00043 
00044 #define GetIParticleCacheInterface(cd) \
00045             (IParticleCache *)(cd)->GetInterface(PARTICLECACHE_INTERFACE)
00046 
00047 enum 
00048 {
00049     pointcache_record,
00050     pointcache_setcache,
00051     pointcache_enablemods,
00052     pointcache_disablemods
00053 };
00054 
00055 //POINTCACHE_MODIFIERVERSION == 1
00056 enum point_cache_mod_1_playback_params {
00057     playback_original,
00058     playback_start,
00059     playback_range,
00060     playback_graph,
00061 };
00062 
00063 enum point_cache_pc_params {
00064     pc_cache_file,
00065     pc_record_start,
00066     pc_record_end,
00067     pc_sample_rate,
00068     pc_strength,
00069     pc_relative,
00070     pc_playback_type,
00071     pc_playback_start,
00072     pc_playback_end,
00073     pc_playback_before,
00074     pc_playback_after,
00075     pc_playback_frame,
00076     pc_interp_type,
00077     pc_apply_to_spline,
00078     pc_preload_cache,
00079     pc_clamp_graph,
00080     pc_force_unc_path,
00081     pc_load_type,
00082     pc_apply_to_whole_object,
00083     pc_load_type_slave,
00084     pc_file_count
00085 };
00086 
00087 //****************************************************************
00088 
00089 #pragma warning(push)
00090 #pragma warning(disable:4100)
00091 
00103 class IPointCache :  public FPMixinInterface 
00104     {
00105     public:
00106 
00107         //Function Publishing System
00108         //Function Map For Mixin Interface
00109         //*************************************************
00110         BEGIN_FUNCTION_MAP
00111             VFN_0(pointcache_record, fnRecord);
00112             VFN_0(pointcache_setcache, fnSetCache);
00113             VFN_0(pointcache_enablemods, fnEnableMods);
00114             VFN_0(pointcache_disablemods, fnDisableMods);
00115 
00116         END_FUNCTION_MAP
00117         virtual FPInterfaceDesc* GetDesc()=0;    // <-- must implement 
00118 
00121         virtual void    fnRecord()=0;
00124         virtual void    fnSetCache()=0;
00127         virtual void    fnEnableMods()=0;
00130         virtual void    fnDisableMods()=0;
00131 
00132     };
00133 
00134 
00135 
00147 class IPointCacheWSM :  public FPMixinInterface 
00148     {
00149     public:
00150 
00151         //Function Publishing System
00152         //Function Map For Mixin Interface
00153         //*************************************************
00154         BEGIN_FUNCTION_MAP
00155             VFN_0(pointcache_record, fnRecord);
00156             VFN_0(pointcache_setcache, fnSetCache);
00157             VFN_0(pointcache_enablemods, fnEnableMods);
00158             VFN_0(pointcache_disablemods, fnDisableMods);
00159 
00160         END_FUNCTION_MAP
00161         virtual FPInterfaceDesc* GetDesc()=0;    // <-- must implement 
00162 
00165         virtual void    fnRecord()=0;
00168         virtual void    fnSetCache()=0;
00171         virtual void    fnEnableMods()=0;
00174         virtual void    fnDisableMods()=0;
00175 
00176     };
00177 
00178 class IParticleCache :  public FPMixinInterface 
00179     {
00180     public:
00181 
00182         //Function Publishing System
00183         //Function Map For Mixin Interface
00184         //*************************************************
00185         BEGIN_FUNCTION_MAP
00186             VFN_0(pointcache_record, fnRecord);
00187             VFN_0(pointcache_setcache, fnSetCache);
00188 
00189         END_FUNCTION_MAP
00190         virtual FPInterfaceDesc* GetDesc()=0;    // <-- must implement 
00191 
00192         virtual void    fnRecord()=0;
00193         virtual void    fnSetCache()=0;
00194 
00195     };
00196 #pragma warning(pop)