136 lines
4.8 KiB
C++
Executable File
136 lines
4.8 KiB
C++
Executable File
/*! \file IParticleChannelMeshMap.h
|
|
\brief Channel-generic interface for particle channels
|
|
that store data in "mesh map" form
|
|
The channel store a set of MeshMapChannels
|
|
*/
|
|
/**********************************************************************
|
|
*<
|
|
CREATED BY: Oleg Bayborodin
|
|
|
|
HISTORY: created 06-17-02
|
|
|
|
*> Copyright (c) 2001, All Rights Reserved.
|
|
**********************************************************************/
|
|
|
|
#ifndef _IPARTICLECHANNELMESHMAP_H_
|
|
#define _IPARTICLECHANNELMESHMAP_H_
|
|
|
|
#include "max.h"
|
|
|
|
#include "PFExport.h"
|
|
|
|
#include "IParticleChannelMap.h"
|
|
|
|
// standard particle channel "Mesh Map"
|
|
// interface ID
|
|
#define PARTICLECHANNELMESHMAPR_INTERFACE Interface_ID(0x74f93c17, 0x1eb34500)
|
|
#define PARTICLECHANNELMESHMAPW_INTERFACE Interface_ID(0x74f93c17, 0x1eb34501)
|
|
|
|
#define GetParticleChannelMeshMapRInterface(obj) ((IParticleChannelMeshMapR*)obj->GetInterface(PARTICLECHANNELMESHMAPR_INTERFACE))
|
|
#define GetParticleChannelMeshMapWInterface(obj) ((IParticleChannelMeshMapW*)obj->GetInterface(PARTICLECHANNELMESHMAPW_INTERFACE))
|
|
|
|
class IParticleChannelMeshMapR : public FPMixinInterface
|
|
{
|
|
public:
|
|
|
|
// function IDs Read
|
|
enum { kGetNumMaps,
|
|
kMapSupport,
|
|
kGetMapReadChannel
|
|
};
|
|
|
|
BEGIN_FUNCTION_MAP
|
|
|
|
FN_0(kGetNumMaps, TYPE_INT, GetNumMaps);
|
|
FN_1(kMapSupport, TYPE_bool, MapSupport, TYPE_INT);
|
|
FN_1(kGetMapReadChannel, TYPE_INTERFACE, GetMapReadChannel, TYPE_INT);
|
|
|
|
END_FUNCTION_MAP
|
|
|
|
/** @defgroup IParticleChannelMeshMap IParticleChannelMeshMap.h
|
|
* @{
|
|
*/
|
|
|
|
/*! \fn virtual int GetNumMaps() const = 0;
|
|
* \brief returns the number of mapping channels in use.
|
|
*/
|
|
virtual int GetNumMaps() const = 0;
|
|
|
|
/*! \fn virtual bool MapSupport(int mp) const = 0;
|
|
* \brief returns true if the specified mapping channel is supported; otherwise false
|
|
\param int mp: specifies the channel. See List of Mapping Channel Index Values.
|
|
*/
|
|
virtual bool MapSupport(int mp) const = 0;
|
|
|
|
/*! \fn virtual IParticleChannelMapR* GetMapReadChannel(int mp) = 0;
|
|
* \brief returns an interface if the specified mapping channel is supported; otherwise NULL
|
|
\param int mp: specifies the channel. See List of Mapping Channel Index Values.
|
|
*/
|
|
virtual IParticleChannelMapR* GetMapReadChannel(int mp) = 0;
|
|
|
|
/*! \fn FPInterfaceDesc* GetDesc() { return GetDescByID(PARTICLECHANNELMESHMAPR_INTERFACE); }
|
|
* \brief
|
|
*/
|
|
FPInterfaceDesc* GetDesc() { return GetDescByID(PARTICLECHANNELMESHMAPR_INTERFACE); }
|
|
};
|
|
|
|
|
|
class IParticleChannelMeshMapW : public FPMixinInterface
|
|
{
|
|
public:
|
|
|
|
// function IDs Write
|
|
enum { kSetNumMaps,
|
|
kSetMapSupport,
|
|
kGetMapChannel,
|
|
kGetMapChannelObject
|
|
};
|
|
|
|
BEGIN_FUNCTION_MAP
|
|
|
|
VFN_2(kSetNumMaps, SetNumMaps, TYPE_INT, TYPE_bool);
|
|
VFN_2(kSetMapSupport, SetMapSupport, TYPE_INT, TYPE_bool);
|
|
FN_1(kGetMapChannel, TYPE_INTERFACE, GetMapChannel, TYPE_INT);
|
|
FN_1(kGetMapChannelObject, TYPE_IOBJECT, GetMapChannelObject, TYPE_INT);
|
|
|
|
END_FUNCTION_MAP
|
|
|
|
/** @defgroup IParticleChannelMeshMap IParticleChannelMeshMap.h
|
|
* @{
|
|
*/
|
|
|
|
/*! \fn virtual void SetNumMaps(int ct, bool keep=false) = 0;
|
|
* \brief sets the number of texture maps used. Note that this call is made automatically if SetMapSupport() is called.
|
|
\param int ct: the number of texture maps to use. This is a value between 0 and MAX_MESHMAPS-1.
|
|
\param bool keep: true to keep the old mapping information after the resize; false to discard it.
|
|
*/
|
|
virtual void SetNumMaps(int ct, bool keep=false) = 0;
|
|
|
|
/*! \fn virtual void SetMapSupport(int mp, bool support=true) = 0;
|
|
* \brief sets whether the specified mapping channels is supported or not.
|
|
\param int mp: specifies the channel. See List of Mapping Channel Index Values.
|
|
\param bool support: true to indicate the channel is supported; otherwise false.
|
|
*/
|
|
virtual void SetMapSupport(int mp, bool support=true) = 0;
|
|
|
|
/*! \fn virtual IParticleChannelMapW* GetMapChannel(int mp) = 0;
|
|
* \brief returns an interface if the specified mapping channel is supported; otherwise NULL
|
|
\param int mp: specifies the channel. See List of Mapping Channel Index Values.
|
|
*/
|
|
virtual IParticleChannelMapW* GetMapChannel(int mp) = 0;
|
|
|
|
/*! \fn virtual IObject* GetMapChannelObject(int mp) const = 0;
|
|
* \brief returns an object if the specified mapping channel is supported; otherwise NULL
|
|
\param int mp: specifies the channel. See List of Mapping Channel Index Values.
|
|
*/
|
|
virtual IObject* GetMapChannelObject(int mp) const = 0;
|
|
|
|
/*! \fn FPInterfaceDesc* GetDesc() { return GetDescByID(PARTICLECHANNELMESHMAPW_INTERFACE); }
|
|
* \brief
|
|
*/
|
|
FPInterfaceDesc* GetDesc() { return GetDescByID(PARTICLECHANNELMESHMAPW_INTERFACE); }
|
|
};
|
|
|
|
|
|
#endif // _IPARTICLECHANNELMESHMAP_H_
|