deargui-vpl/ref/virtools/Samples/ExportPlugins/3dsMax Export/TreeViewUtil.h

265 lines
4.5 KiB
C++

/**********************************************************************
*<
FILE: TreeViewUtil.h
DESCRIPTION: Includes for Plugins
CREATED BY:
HISTORY:
*> Copyright (c) 2000, All Rights Reserved.
**********************************************************************/
#ifndef __TREEVIEWUTIL__H
#define __TREEVIEWUTIL__H
#include "Max.h"
#include "istdplug.h"
#include "iparamb2.h"
#include "iparamm2.h"
#include "notify.h"
#include "modstack.h"
#include "macrorec.h"
#include "utilapi.h"
#include "iFnPub.h"
extern TCHAR *GetString(int id);
extern HINSTANCE hInstance;
#define MAPCHANNELDELETE_CLASS_ID Class_ID(0x31f9c666, 0x3b4a555)
#define MAPCHANNELPASTE_CLASS_ID Class_ID(0x31f9c666, 0x3b4a566)
#define MAPCHANNELADD_CLASS_ID Class_ID(0x31f9c666, 0x3b4a577)
#define SELECTBYCHANNEL_CLASS_ID Class_ID(0x31f9c666, 0x3b4a588)
#define TREEVIEWUTIL_CLASS_ID Class_ID(0x4ae35082, 0x282bf350)
#define TRIGEOMCHANNEL 1
#define TRIMAPCHANNEL 2
#define TRISELCHANNEL 3
#define POLYGEOMCHANNEL 4
#define POLYMAPCHANNEL 5
#define POLYSELCHANNEL 6
#define PATCHGEOMCHANNEL 7
#define PATCHMAPCHANNEL 8
#define PATCHSELCHANNEL 9
#define CHANNEL_GEOM 10
#define CHANNEL_SEL 11
#define CHANNEL_MAP 12
class UVWData
{
public:
INode *node;
int channelType;
int channelID;
int subID;
int numOfDeadVerts;
TSTR nodeName;
TSTR channelName;
int numVerts, numFaces;
int numRealFaces;
int kbsize;
};
#define EMPTY 0
#define TRIMESH_GEOM 1
#define TRIMESH_MAP 2
#define TRIMESH_SEL 3
#define POLYMESH_GEOM 4
#define POLYMESH_MAP 5
#define POLYMESH_SEL 6
#define PATCHMESH_GEOM 7
#define PATCHMESH_MAP 8
#define PATCHMESH_SEL 9
class CopyBuffer
{
public:
~CopyBuffer()
{
Clear();
}
int copyType;
int subID;
int numRealFaces;
int numFaces;
Tab<float> w;
Tab<Point3> verts;
Tab<MNVert> mnVerts;
Tab<TVFace> uvwFaces;
Tab<Face> geomFaces;
Tab<MNMapFace*> uvwMNFaces;
Tab<MNFace*> geomMNFaces;
Tab<TVPatch> uvwPatchFaces;
Tab<int> patchDeg;
void Clear();
int pasteToChannelType;
int pasteToChannel;
int pasteToSubID;
float mFalloff, mPinch, mBubble;
int mEdgeDist, mUseEdgeDists, mAffectBackface, mUseSoftSelections;
TSTR name;
IOResult Save(ISave *isave);
IOResult Load(ILoad *iload);
void SetGeomMNFaceCount(int count);
void SetMapMNFaceCount(int count);
void Copy(CopyBuffer *from);
};
class TreeViewUtil : public UtilityObj {
public:
HWND hPanel;
IUtil *iu;
Interface *ip;
void BeginEditParams(Interface *ip,IUtil *iu);
void EndEditParams(Interface *ip,IUtil *iu);
void Init(HWND hWnd);
void Destroy(HWND hWnd);
void DeleteThis() { }
//Constructor/Destructor
TreeViewUtil();
~TreeViewUtil();
void CreateNewFloater();
HWND floaterHWND;
HWND listViewHWND;
HTREEITEM hTRoot;
Tab<UVWData*> nodeList;
void AddSelectedNodesToList();
LRESULT NotifyHandler( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void InitListView();
void UpdateViewItems();
void AddListViewItems();
void InitWindow();
void DestroyWindow();
static void NotifyPreDeleteNode(void* param, NotifyInfo* arg);
static void NotifySelectionChange(void* param, NotifyInfo*);
BOOL lockSelection;
BOOL collapse;
BOOL subComponents;
ICustButton* iLockButton;
ICustButton* iClearButton;
ICustButton* iNameButton;
ICustButton* iCopyButton;
ICustButton* iPasteButton;
ICustButton* iAddButton;
ICustButton* iSubCompButton;
ICustButton* iCollapseButton;
void DeleteChannel(INode *node, int mapID);
void ShowRMenu(HWND hwnd, int x, int y) ;
void UpdateUI();
void NameChannel();
void NameChannel(int whichChannel);
void NameChannel(INode *node, int channelType, int channel, int subChannel, TCHAR *name);
void AddNames();
TSTR channelName;
CopyBuffer buffer;
int GetSel();
void CopyToBuffer(int whichChannel);
void CopyToBuffer(INode *node, int channelType, int channel, int subChannel);
void PasteToNode(INode *node, int channelType, int channel, int subChannel);
void PasteToNode(int whichChannel);
void AddChannel(INode *node);
void AddChannel(int whichChannel);
void Collapse();
void Collapse(INode *node);
int GetDeadGeomVerts(Mesh *msh);
int GetDeadMapVerts(Mesh *msh, int mp);
int GetDeadGeomVerts(MNMesh *msh);
int GetDeadMapVerts(MNMesh *msh, int mp);
int GetDeadGeomVerts(PatchMesh *msh);
int GetDeadMapVerts(PatchMesh *msh, int mp);
void AddMesh(Mesh *mesh, INode *node);
void AddPoly(MNMesh *mesh, INode *node);
void AddPatch(PatchMesh *mesh, INode *node);
};
#endif // __TREEVIEWUTIL__H