Files
firestorm/Gameleap/code/mw4/Tools/3DSPlugins/AnimationSuite/cvobject.h
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

142 lines
4.1 KiB
C++

/**********************************************************************
*<
FILE: cvObject.h
DESCRIPTION:3d Studio plugin class for mw4 collision object data
CREATED BY: jkyle
HISTORY:7-22-1999 - Created
*> Copyright (c) 1997, All Rights Reserved.
**********************************************************************/
#ifndef __CVOBJECT__H
#define __CVOBJECT__H
#ifdef STRICT // Already defined by stdafx,
#undef STRICT // so we avoid warning linking msg
#endif
#ifdef _MBCS // The same as above
#undef _MBCS
#endif
#include "AnimationSuite.h"
#pragma pack(push,8)
#include "iparamm.h"
#define CV_MATERIAL 0
#define CV_SIZE 1
class ParamBlock;
struct CvStruct
{
Stuff::OBB m_localSpaceVolume;
Stuff::OBB m_worldSpaceVolume;
BYTE m_material;
};
class CvObject;
class CvObjectCreateCallBack: public CreateMouseCallBack
{
public:
int proc( ViewExp *vpt,int msg, int point, int flags, IPoint2 m, Matrix3& mat );
void SetObj(CvObject *obj) { m_ob = obj; }
protected:
Point3 m_p0, m_p1;
CvObject *m_ob;
};
class CvObject : public HelperObject
{
private:
// void CalcLocalBoundBox(int,ViewExp *vpt,Box3& box);
// void CalcOBBChildren(INode *);
public:
static HWND m_hParams;
static IObjParam *m_iObjParams;
static IParamMap *m_pmapParam;
protected:
IParamBlock *m_pblock;
BOOL m_suspendSnap;
int m_extDispFlags;
public:
CvObject();
~CvObject() {};
void BeginEditParams( IObjParam *ip, ULONG flags,Animatable *prev);
void EndEditParams( IObjParam *ip, ULONG flags,Animatable *next);
IParamArray *GetParamBlock() { return m_pblock; }
ParamDimension *GetParameterDim(int pbIndex) { return stdNormalizedDim; }
void InitNodeName(TSTR& s) { s = GetString(IDS_DB_CVOBJECT); }
ObjectState Eval(TimeValue time);
CreateMouseCallBack* GetCreateMouseCallBack();
ObjectHandle ApplyTransform(Matrix3& matrix) {return this;}
Interval ObjectValidity(TimeValue t) {return FOREVER;}
int CanConvertToType(Class_ID obtype) {return FALSE;}
Object* ConvertToType(TimeValue t, Class_ID obtype) {assert(0);return NULL;}
int DoOwnSelectHilite() { return 1; }
int HitTest(TimeValue t, INode* inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt);
void Snap(TimeValue t, INode* inode, SnapInfo *snap, IPoint2 *p, ViewExp *vpt);
void SetExtendedDisplay(int flags);
int Display(TimeValue t, INode* inode, ViewExp *vpt, int flags);
void GetWorldBoundBox(TimeValue t, INode *mat, ViewExp *vpt, Box3& box );
void GetLocalBoundBox(TimeValue t, INode *mat, ViewExp *vpt, Box3& box );
static void DrawAxis(ViewExp *vpt, const Matrix3 &tm, float length, BOOL sel=FALSE, BOOL frozen=FALSE);
static Box3 GetAxisBox(ViewExp *vpt, const Matrix3 &tm,Point3 box,int resetTM);
static void DrawBox(GraphicsWindow *gw, Box3 &box);
// Animatable methods
void DeleteThis() { delete this; }
Class_ID ClassID() { return CVOBJECT_CLASS_ID; }
void GetClassName(TSTR& s) { s = TSTR(GetString(IDS_DB_CV_HELPER)); }
int IsKeyable(){ return 1;}
// This method returns the number of sub-anims this plug-in
// has. Is has one, the parameter block.
int NumSubs() { return 1; }
// This methods returns the ith sub-anim (parameter)
Animatable* SubAnim(int i);
// This method returns the name of the ith sub-anim.
TSTR SubAnimName(int i);
// From ref
// reference the parameter block and the helper
int NumRefs() { return 1;};
// This method returns the ith reference.
RefTargetHandle GetReference(int i);
// This method sets the ith reference to the target passed.
void SetReference(int i, RefTargetHandle rtarg);
// This method recieves the change notification methods
RefResult NotifyRefChanged(Interval, RefTargetHandle, PartID&, RefMessage);
RefTargetHandle Clone(RemapDir& remap = NoRemap());
IOResult Load(ILoad *iload);
IOResult Save(ISave *isave);
friend CvObjectCreateCallBack;
};
#pragma pack(pop)
#endif // __CVOBJECT__H