131 lines
3.4 KiB
C++
Executable File
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
|