2017-04-17 06:17:10 -06:00

157 lines
3.9 KiB
C++
Executable File

/*! \file PFMessages.h
\brief list of REFMSG_USER type messages for PF communications
*/
/**********************************************************************
*<
CREATED BY: Oleg Bayborodin
HISTORY: created 12-19-01
*> Copyright (c) 2001, All Rights Reserved.
**********************************************************************/
#ifndef _PFMESSAGES_H_
#define _PFMESSAGES_H_
#include "PreciseTimeValue.h"
// PF notification messages
enum { kPFMSG_UpdateToTime = REFMSG_USER + 4878, // x1130E
kPFMSG_HasSurplus, // x1130F
kPFMSG_PFShellWiringChanged, // x11310
kPFMSG_ActionListWiringChanged, // x11311
kPFMSG_GetNextActionList, // x11312
kPFMSG_GetNumParticles, // x11313
kPFMSG_GetNumParticlesGenerated, // x11314
kPFMSG_GetUpdateTime,
kPFMSG_GetUpdateInterval,
kPFMSG_GetParticleBornIndex,
kPFMSG_GetParticleIndex,
kPFMSG_GetParticleGroup,
kPFMSG_GetParticleTime,
kPFMSG_SetParticleTime,
kPFMSG_GetParticleAge,
kPFMSG_SetParticleAge,
kPFMSG_GetParticleLifeSpan,
kPFMSG_SetParticleLifeSpan,
kPFMSG_GetParticleEventTime,
kPFMSG_SetParticleEventTime,
kPFMSG_GetParticlePosition,
kPFMSG_SetParticlePosition,
kPFMSG_GetParticleSpeed,
kPFMSG_SetParticleSpeed,
kPFMSG_GetParticleOrientation,
kPFMSG_SetParticleOrientation,
kPFMSG_GetParticleSpin,
kPFMSG_SetParticleSpin,
kPFMSG_GetParticleScale,
kPFMSG_SetParticleScale,
kPFMSG_GetParticleSelected,
kPFMSG_SetParticleSelected,
kPFMSG_GetParticleShape,
kPFMSG_SetParticleShape,
kPFMSG_SetParticleGlobalShape,
kPFMSG_UpdateMaterial,
kPFMSG_ActionListContentChanged,
kPFMSG_OpenParticleView,
kPFMSG_IsDownStream,
kPFMSG_UpdateTypeChanged,
kPFMSG_InvalidateParticles,
kPFMSG_InvalidateViewportParticles,
kPFMSG_InvalidateRenderParticles,
kPFMSG_GetSubObjectCentersRequest,
kPFMSG_GetSubObjectTMsRequest,
kPFMSG_HitTestRequest,
kPFMSG_GetBoundBoxRequest,
kPFMSG_GetNumParticlesActionList,
kPFMSG_GetParticleBornIndexActionList,
kPFMSG_UpdateWireColor,
kPFMSG_GetNodeValue,
kPFMSG_HasUpStreamActionList,
kPFMSG_IsActionActive,
kPFMSG_GetParentActionList,
kPFMSG_PreDeleteNode,
kPFMSG_GetNumParticlesInParticleGroup,
kPFMSG_InvalidateDownStream,
kPFMSG_ActionListActivityChanged,
kPFMSG_SyncRenderState,
kPFMSG_CheckEscape,
kPFMSG_DynamicNameChange,
kPFMSG_ConfirmNotifyCatcherPresence,
kPFMSG_cacheUpdateStart,
kPFMSG_cacheUpdateFinish
};
struct GetSubObjectRequestData {
SubObjAxisCallback* cb;
TimeValue t;
INode* node;
ModContext* mc;
};
struct HitTestRequestData {
TimeValue t;
INode* inode;
int type;
int crossing;
int flags;
IPoint2* p;
ViewExp* vpt;
ModContext* mc;
int hitResult;
};
struct GetBoundBoxRequestData {
TimeValue t;
INode* inode;
ViewExp* vp;
Box3* box;
};
struct GetParticleDataRequest {
int index;
union {
int count;
int bornIndex;
INode* pGroup;
PreciseTimeValue* time;
PreciseTimeValue* age;
PreciseTimeValue* lifeSpan;
PreciseTimeValue* eventTime;
Point3* position;
Point3* speed;
Point3* acceleration;
Quat* orientation;
AngAxis* spin;
Point3* scale;
bool selected;
Mesh* shape;
};
};
struct GetTimeDataRequest {
TimeValue time;
TimeValue start;
TimeValue finish;
};
// the class is used to identify particle group
// and action list the hit particle belongs to
class PFHitData : public HitData {
public:
INode* particleGroupNode;
INode* actionListNode;
PFHitData() { particleGroupNode = NULL; actionListNode = NULL; }
PFHitData(INode* pgroup, INode* alist) { particleGroupNode = pgroup; actionListNode = alist; }
};
// the class is used to retrieve activity status
// of an action item and its parent action list
struct PFActiveActionDataRequest {
INode* actionNode;
int active;
FPMixinInterface* iActionList;
};
#endif // _PFMESSAGES_H_