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.
121 lines
2.4 KiB
C++
121 lines
2.4 KiB
C++
// PlugTest.h : main header file for the PLUGTEST DLL
|
|
//
|
|
|
|
#if !defined(OPT_KEYFRAME)
|
|
#define OPT_KEYFRAME
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#ifndef __AFXWIN_H__
|
|
#error include 'stdafx.h' before including this file for PCH
|
|
#endif
|
|
|
|
|
|
#include "AnimationSuite.h"
|
|
|
|
|
|
struct ThreadData
|
|
{
|
|
|
|
int stop;
|
|
int abort;
|
|
int done;
|
|
float percent_complete;
|
|
INode* theNode;
|
|
float transThreshold;
|
|
float rotThreshold;
|
|
TimeValue step;
|
|
int totalChildren;
|
|
int childrenCounted;
|
|
|
|
char current_operation[200];
|
|
|
|
ThreadData()
|
|
{
|
|
stop = 0;
|
|
abort = 0;
|
|
percent_complete = 0;
|
|
step = 0;
|
|
transThreshold = 0;
|
|
rotThreshold = 0;
|
|
theNode = NULL;
|
|
done = 0;
|
|
totalChildren = 0;
|
|
childrenCounted = 0;
|
|
}
|
|
|
|
};
|
|
|
|
class OptKeyReduceStatus:
|
|
public KeyReduceStatus
|
|
{
|
|
public:
|
|
|
|
OptKeyReduceStatus()
|
|
{
|
|
|
|
}
|
|
|
|
void Init(int total)
|
|
{
|
|
|
|
}
|
|
|
|
int Progress(int p){return KEYREDUCE_CONTINUE;};
|
|
};
|
|
|
|
extern CCriticalSection g_threadLock;
|
|
extern ThreadData g_threadInfo;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// PlugPanel, manage the Plugins' display panel
|
|
class OptimizeKeyframePanel : public UtilityObj {
|
|
protected:
|
|
IUtil* m_iu;
|
|
HWND m_hPanel;
|
|
|
|
public:
|
|
Interface* m_ip;
|
|
|
|
// Constructor & Destructor
|
|
OptimizeKeyframePanel() {};
|
|
virtual ~OptimizeKeyframePanel() {};
|
|
|
|
// Overides of the UtilityObj class
|
|
void BeginEditParams(Interface* ip, IUtil* iu);
|
|
void EndEditParams(Interface* ip, IUtil* iu);
|
|
void DeleteThis() {}
|
|
void Init(HWND hWnd);
|
|
void Destroy(HWND hWnd);
|
|
|
|
//Specific Methods
|
|
void Optimize();
|
|
void OptimizeAnimation(INode *copy_node, int ¤t_node, int total_nodes, JointEditDialog *dialog);
|
|
|
|
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 3DS Max Standard Select-by-name Dialog Box Callback Class
|
|
class TestHitByNameDlgCallback : public HitByNameDlgCallback
|
|
{
|
|
public:
|
|
virtual TCHAR* dialogTitle() { return _T("Select a Node to get information from");}
|
|
virtual TCHAR* buttonText() { return _T("Select");}
|
|
virtual BOOL useFilter() {return FALSE;}
|
|
virtual BOOL useProc() { return TRUE;}
|
|
virtual void proc(INodeTab &nodeTab){NodeTab = nodeTab;}
|
|
virtual BOOL singleSelect() {return TRUE;}
|
|
|
|
public:
|
|
INodeTab NodeTab;
|
|
};
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#endif
|