added everything
This commit is contained in:
129
lib/maxsdk70/include/ParticleFlow/IParticleChannelMesh.h
Executable file
129
lib/maxsdk70/include/ParticleFlow/IParticleChannelMesh.h
Executable file
@@ -0,0 +1,129 @@
|
||||
/*! \file IParticleChannelMesh.h
|
||||
\brief Channel-generic interface for particle channels
|
||||
that store data in "mesh" form
|
||||
The channel can be local (each particle has its own mesh)
|
||||
global (all particles have the same mesh) and shared
|
||||
(particles are sharing a limited set of meshes)
|
||||
*/
|
||||
/**********************************************************************
|
||||
*<
|
||||
CREATED BY: Oleg Bayborodin
|
||||
|
||||
HISTORY: created 11-28-01
|
||||
|
||||
*> Copyright (c) 2001, All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef _IPARTICLECHANNELMESH_H_
|
||||
#define _IPARTICLECHANNELMESH_H_
|
||||
|
||||
#include "max.h"
|
||||
|
||||
#include "PFExport.h"
|
||||
|
||||
// standard particle channel "Mesh"
|
||||
// interface ID
|
||||
#define PARTICLECHANNELMESHR_INTERFACE Interface_ID(0x74f93c11, 0x1eb34500)
|
||||
#define PARTICLECHANNELMESHW_INTERFACE Interface_ID(0x74f93c11, 0x1eb34501)
|
||||
|
||||
// since it's a "type" channel there is no "GetChannel" defines
|
||||
//#define GetParticleChannelMeshRInterface(obj) ((IParticleChannelMeshR*)obj->GetInterface(PARTICLECHANNELMESHR_INTERFACE))
|
||||
//#define GetParticleChannelMeshWInterface(obj) ((IParticleChannelMeshW*)obj->GetInterface(PARTICLECHANNELMESHW_INTERFACE))
|
||||
|
||||
|
||||
class IParticleChannelMeshR : public FPMixinInterface
|
||||
{
|
||||
public:
|
||||
|
||||
// function IDs Read
|
||||
enum { kIsShared,
|
||||
kGetValueCount,
|
||||
kGetValueIndex,
|
||||
kGetValueByIndex,
|
||||
kGetValue,
|
||||
kGetValueFirst,
|
||||
kGetMaxBoundingBox
|
||||
};
|
||||
|
||||
BEGIN_FUNCTION_MAP
|
||||
|
||||
FN_0(kIsShared, TYPE_bool, IsShared);
|
||||
FN_0(kGetValueCount, TYPE_INT, GetValueCount);
|
||||
FN_1(kGetValueIndex, TYPE_INT, GetValueIndex, TYPE_INT);
|
||||
FN_1(kGetValueByIndex, TYPE_MESH, GetValueByIndex, TYPE_INT);
|
||||
FN_1(kGetValue, TYPE_MESH, GetValue, TYPE_INT);
|
||||
FN_0(kGetValueFirst, TYPE_MESH, GetValue);
|
||||
VFN_2(kGetMaxBoundingBox, GetMaxBoundingBox, TYPE_POINT3_BR, TYPE_POINT3_BR);
|
||||
|
||||
END_FUNCTION_MAP
|
||||
|
||||
// check out if some particles have shared mesh
|
||||
// if it's true then there is no need to get a shape for each particle
|
||||
virtual bool IsShared() const = 0;
|
||||
// get total number of actual meshes (values) in the channel
|
||||
virtual int GetValueCount() const = 0;
|
||||
// get the value index of a particle
|
||||
virtual int GetValueIndex(int particleIndex) const = 0;
|
||||
// get shape of the valueIndex-th value
|
||||
virtual const Mesh* GetValueByIndex(int valueIndex) const = 0;
|
||||
// get shape for particle with index
|
||||
virtual const Mesh* GetValue(int particleIndex) const = 0;
|
||||
// get global shape for all particles
|
||||
// the method returns the mesh of the first particle if it is local or shared
|
||||
virtual const Mesh* GetValue() const = 0;
|
||||
// returns maximal bounding box
|
||||
virtual const Box3& GetMaxBoundingBox() const = 0;
|
||||
// FnPub alternative for the method above
|
||||
PFExport void GetMaxBoundingBox(Point3& corner1, Point3& corner2) const;
|
||||
|
||||
FPInterfaceDesc* GetDesc() { return GetDescByID(PARTICLECHANNELMESHR_INTERFACE); }
|
||||
};
|
||||
|
||||
class IParticleChannelMeshW : public FPMixinInterface
|
||||
{
|
||||
public:
|
||||
|
||||
// function IDs Write
|
||||
enum { kSetValue,
|
||||
kSetValueMany,
|
||||
kSetValueAll,
|
||||
kCopyValue,
|
||||
kCopyValueMany,
|
||||
kCopyValueAll,
|
||||
kBuildMaxBoundingBox
|
||||
};
|
||||
|
||||
BEGIN_FUNCTION_MAP
|
||||
|
||||
FN_2(kSetValue, TYPE_bool, SetValue, TYPE_INT, TYPE_MESH);
|
||||
FN_2(kSetValueMany, TYPE_bool, SetValue, TYPE_INT_TAB_BR, TYPE_MESH);
|
||||
FN_1(kSetValueAll, TYPE_bool, SetValue, TYPE_MESH);
|
||||
FN_2(kCopyValue, TYPE_bool, CopyValue, TYPE_INT, TYPE_INT);
|
||||
FN_2(kCopyValueMany, TYPE_bool, CopyValue, TYPE_INT, TYPE_INT_TAB_BR);
|
||||
FN_1(kCopyValueAll, TYPE_bool, CopyValue, TYPE_INT);
|
||||
VFN_0(kBuildMaxBoundingBox, BuildMaxBoundingBox);
|
||||
|
||||
END_FUNCTION_MAP
|
||||
|
||||
// copies mesh to be a local value for particle with index "particleIndex"
|
||||
// returns true if successful
|
||||
virtual bool SetValue(int particleIndex, Mesh* mesh) = 0;
|
||||
// copies mesh to be a shared value with indices in "particleIndices"
|
||||
// returns true if successful
|
||||
virtual bool SetValue(Tab<int>& particleIndices, Mesh* mesh) = 0;
|
||||
// copies mesh to be a global values for all particles
|
||||
// returns true if successful
|
||||
virtual bool SetValue(Mesh* mesh) = 0;
|
||||
// copy mesh value from fromParticle to toParticle
|
||||
virtual bool CopyValue(int fromParticle, int toParticle) = 0;
|
||||
// copy mesh value from fromParticle to toParticles
|
||||
virtual bool CopyValue(int fromParticle, Tab<int>& toParticles) = 0;
|
||||
// copy mesh value from fromParticle to all particles
|
||||
virtual bool CopyValue(int fromParticle) = 0;
|
||||
// build maximal bounding box for the set of all shapes
|
||||
virtual void BuildMaxBoundingBox() = 0;
|
||||
|
||||
FPInterfaceDesc* GetDesc() { return GetDescByID(PARTICLECHANNELMESHW_INTERFACE); }
|
||||
};
|
||||
|
||||
#endif // _IPARTICLECHANNELMESH_H_
|
||||
Reference in New Issue
Block a user