tge/lib/maxsdk40/IPointCache.h
2017-04-17 06:17:10 -06:00

131 lines
3.4 KiB
C++
Executable File

//-------------------------------------------------------------
// Access to Point Cache
//
#ifndef __IPOINTCACHE__H
#define __IPOINTCACHE__H
#include "iFnPub.h"
#define POINTCACHE_CLASS_ID Class_ID(0x21d07ae1, 0x48d30bec)
#define POINTCACHEWSM_CLASS_ID Class_ID(0x21d07ae1, 0x48d30bed)
#define PARTICLECACHE_CLASS_ID Class_ID(0x21d07ae1, 0x48d30bee)
enum { pointcache_params };
//enums for various parameters
//note pb_record_file is no longer used and legacy
//pb_disable_mods is no longer used and legacy
//pb_fastcache is fast caching scheme but right now can potential cause crashes
// or extremely slow conditions are systems that spawn particles
enum {
pb_time,pb_start_time,pb_end_time,pb_samples, pb_disable_mods, pb_cache_file, pb_record_file,pb_relative,pb_strength,pb_fastcache
};
class IPointCache;
class IPointCacheWSM;
class IParticleCache;
//***************************************************************
//Function Publishing System stuff
//****************************************************************
#define POINTCACHE_INTERFACE Interface_ID(0x53b4409b, 0x18ee7cc8)
#define GetIPointCacheInterface(cd) \
(IPointCache *)(cd)->GetInterface(POINTCACHE_INTERFACE)
#define POINTCACHEWSM_INTERFACE Interface_ID(0x53b4409b, 0x18ee7cc9)
#define GetIPointCacheWSMInterface(cd) \
(IPointCacheWSM *)(cd)->GetInterface(POINTCACHEWSM_INTERFACE)
#define PARTICLECACHE_INTERFACE Interface_ID(0x53b4409b, 0x18ee7cd0)
#define GetIParticleCacheInterface(cd) \
(IParticleCache *)(cd)->GetInterface(PARTICLECACHE_INTERFACE)
enum { pointcache_record, pointcache_setcache, pointcache_enablemods,pointcache_disablemods
};
//****************************************************************
class IPointCache : public FPMixinInterface
{
public:
//Function Publishing System
//Function Map For Mixin Interface
//*************************************************
BEGIN_FUNCTION_MAP
VFN_0(pointcache_record, fnRecord);
VFN_0(pointcache_setcache, fnSetCache);
VFN_0(pointcache_enablemods, fnEnableMods);
VFN_0(pointcache_disablemods, fnDisableMods);
END_FUNCTION_MAP
FPInterfaceDesc* GetDesc(); // <-- must implement
virtual void fnRecord()=0;
virtual void fnSetCache()=0;
virtual void fnEnableMods()=0;
virtual void fnDisableMods()=0;
};
class IPointCacheWSM : public FPMixinInterface
{
public:
//Function Publishing System
//Function Map For Mixin Interface
//*************************************************
BEGIN_FUNCTION_MAP
VFN_0(pointcache_record, fnRecord);
VFN_0(pointcache_setcache, fnSetCache);
VFN_0(pointcache_enablemods, fnEnableMods);
VFN_0(pointcache_disablemods, fnDisableMods);
END_FUNCTION_MAP
FPInterfaceDesc* GetDesc(); // <-- must implement
virtual void fnRecord()=0;
virtual void fnSetCache()=0;
virtual void fnEnableMods()=0;
virtual void fnDisableMods()=0;
};
class IParticleCache : public FPMixinInterface
{
public:
//Function Publishing System
//Function Map For Mixin Interface
//*************************************************
BEGIN_FUNCTION_MAP
VFN_0(pointcache_record, fnRecord);
VFN_0(pointcache_setcache, fnSetCache);
END_FUNCTION_MAP
FPInterfaceDesc* GetDesc(); // <-- must implement
virtual void fnRecord()=0;
virtual void fnSetCache()=0;
};
#endif // __IPOINTCACHE__H