Files
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

173 lines
4.2 KiB
C++

#if !defined(AFX_JOINTEDITDIALOG_H__8D9FD983_FEC9_11D1_854E_00A0C9B4E907__INCLUDED_)
#define AFX_JOINTEDITDIALOG_H__8D9FD983_FEC9_11D1_854E_00A0C9B4E907__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// JointEditDialog.h : header file
//
class JointEditDialog;
#include "AnimationSuite.h"
#define TIME_TO_FRAME(time, frame) \
if (GetTicksPerFrame() != 0 || time != 0) \
{ \
frame = (int)((float)time / (float)GetTicksPerFrame()); \
} \
else \
{ \
frame = 0; \
}
/////////////////////////////////////////////////////////////////////////////
// JointEditDialog dialog
#define JOINTPREFS_SAVE_CLASS_ID Class_ID(0xe835e35, 0x7e1e3fd1)
#define JOINT_SAVE_SUPER_CLASS_ID UTILITY_CLASS_ID
#define TEMP_DATA_ID 1
#define PERM_DATA_ID 0
struct JointPreference
{
public:
bool m_forceExclude;
int m_excludeJoint;
enum {
ExcludeJoint = 0,
IncludeJoint,
AutoJoint
};
bool m_decodeWithVelocity;
enum {
LinearKeyframeType,EulerXYZKeyframeType,PositionXYZKeyframeType
};
bool m_forceConvertRotation;
bool m_convertRotationJoint;
int m_rotationConvertType;
bool m_forceConvertTranslation;
bool m_convertTranslationJoint;
int m_translationConvertType;
bool m_optimizeRotation;
Stuff::Radian m_rotationThreshold;
bool m_rotationRange;
int m_rotationSampleStartFrame;
int m_rotationSampleEndFrame;
bool m_optimizeTranslation;
Stuff::Scalar m_translationThreshold;
bool m_translationRange;
int m_translationSampleStartFrame;
int m_translationSampleEndFrame;
};
class JointEditDialog : public CDialog
{
// Construction
public:
JointEditDialog(INode *root_node, Interface *ip, CWnd* pParent = NULL); // standard constructor
static void DeleteAllJointPrefrence(INode* node);
static int CountChildren(INode *node);
static JointPreference * GetJointPrefrence(INode* node);
static void CopyJointPrefrence(INode* source_node, INode* target_node);
void AddJointPreference(INode* node);
void CountNodes(INode* node, int& node_count);
bool NodeAnimated(INode* node);
// Dialog Data
//{{AFX_DATA(JointEditDialog)
enum { IDD = IDD_JOINT_EDIT };
CComboBox m_tranConvertCombo;
CComboBox m_rotConvertCombo;
CComboBox m_includeCombo;
BOOL m_rotOptCheck;
BOOL m_tranOptCheck;
BOOL m_rotRangeCheck;
BOOL m_tranRangeCheck;
BOOL m_encodeVelocityCheck;
float m_rotThresholdEdit;
float m_tranThresholdEdit;
int m_rotMaxRange;
int m_rotMinRange;
int m_tranMaxRange;
int m_tranMinRange;
BOOL m_rotConvertCheck;
BOOL m_tranConvertCheck;
//}}AFX_DATA
protected:
bool m_forceExclude;
bool m_forceConvertRotation;
bool m_forceConvertTranslation;
Interface *m_max_interface;
INode *m_rootNode;
bool m_firstDataSave;
private:
HTREEITEM AddToTree(CTreeCtrl *tree, INode *node, HTREEITEM parent);
void LoadPrefs(INode* node, JointPreference *prefs);
bool NodeIsRoot(INode* node);
bool KnownNode(INode* node);
bool HasKnownControler(INode *node);
bool IsKnownControlerType(Control *c);
void ClearControls();
void SaveControls(JointPreference *j_pref);
void InitControls(JointPreference *j_pref);
void AcceptTempData(INode *node);
void CancelTempData(INode *node);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(JointEditDialog)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(JointEditDialog)
virtual BOOL OnInitDialog();
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnRevertJoint();
afx_msg void OnSelchangedNodeTree(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnCheckRotOpt();
afx_msg void OnConvertRotCheck();
afx_msg void OnCheckRotRange();
afx_msg void OnConvertTranCheck();
afx_msg void OnCheckTranOpt();
afx_msg void OnCheckTranRange();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_JOINTEDITDIALOG_H__8D9FD983_FEC9_11D1_854E_00A0C9B4E907__INCLUDED_)