From d18178d0f35b496dd92c9f1920fd065318da0a74 Mon Sep 17 00:00:00 2001 From: Gundalf <gundalf01@users.sourceforge.net> Date: Sun, 25 Jun 2006 23:33:17 +0000 Subject: [PATCH] now compiles again ;) --- NifProps/NifProps.cpp | 115 ++++++++++++++++++++++++++++++++++++------ NifProps/NifProps.rc | 102 ++++++++++++++++++++++++++++++++----- NifProps/NifStrings.h | 28 ++++++++++ NifProps/resource.h | 64 +++++++++++++++++------ 4 files changed, 266 insertions(+), 43 deletions(-) diff --git a/NifProps/NifProps.cpp b/NifProps/NifProps.cpp index 950596c..c691cad 100755 --- a/NifProps/NifProps.cpp +++ b/NifProps/NifProps.cpp @@ -1,10 +1,13 @@ #pragma warning( disable:4800 ) +#include <map> #include "NifProps.h" #include "NifStrings.h" #include "../NifPlugins.h" #include "../NifGui.h" +using namespace std; + #define NifProps_CLASS_ID Class_ID(0x3f25f18d, 0x99c3b095) class NifProps : public UtilityObj @@ -33,8 +36,13 @@ private: Interface *mIP; INode *mNode; + typedef map<UINT, ISpinnerControl*> Spinners; + Spinners mSpins; + NpComboBox mCbLayer; NpComboBox mCbMaterial; + NpComboBox mCbMotionSystem; + NpComboBox mCbQualityType; void enableGUI(BOOL object, BOOL hvk); }; @@ -97,6 +105,33 @@ void NifProps::BeginEditParams(Interface *ip, IUtil *iu) GetString(IDS_PARAMS), 0); + mSpins[IDC_SP_CENTER_X] = + SetupFloatSpinner(mPanel, IDC_SP_CENTER_X, IDC_ED_CENTER_X, -9999, 9999, 0, .1f); + mSpins[IDC_SP_CENTER_Y] = + SetupFloatSpinner(mPanel, IDC_SP_CENTER_Y, IDC_ED_CENTER_Y, -9999, 9999, 0, .1f); + mSpins[IDC_SP_CENTER_Z] = + SetupFloatSpinner(mPanel, IDC_SP_CENTER_Z, IDC_ED_CENTER_Z, -9999, 9999, 0, .1f); + + mSpins[IDC_SP_MASS] = + SetupFloatSpinner(mPanel, IDC_SP_MASS, IDC_ED_MASS, 0, 1000, 0, .1f); + mSpins[IDC_SP_FRICTION] = + SetupFloatSpinner(mPanel, IDC_SP_FRICTION, IDC_ED_FRICTION, 0, 10, 0, .1f); + mSpins[IDC_SP_RESTITUTION] = + SetupFloatSpinner(mPanel, IDC_SP_RESTITUTION, IDC_ED_RESTITUTION, 0, 10, 0, .1f); + + mSpins[IDC_SP_LINEAR_DAMPING] = + SetupFloatSpinner(mPanel, IDC_SP_LINEAR_DAMPING, IDC_ED_LINEAR_DAMPING, 0, 10, 0, .1f); + mSpins[IDC_SP_ANGULAR_DAMPING] = + SetupFloatSpinner(mPanel, IDC_SP_ANGULAR_DAMPING, IDC_ED_ANGULAR_DAMPING, 0, 10, 0, .1f); + + mSpins[IDC_SP_MAX_LINEAR_VELOCITY] = + SetupFloatSpinner(mPanel, IDC_SP_MAX_LINEAR_VELOCITY, IDC_ED_MAX_LINEAR_VELOCITY, 0, 10, 0, .1f); + mSpins[IDC_SP_MAX_ANGULAR_VELOCITY] = + SetupFloatSpinner(mPanel, IDC_SP_MAX_ANGULAR_VELOCITY, IDC_ED_MAX_ANGULAR_VELOCITY, 0, 10, 0, .1f); + + mSpins[IDC_SP_PENETRATION_DEPTH] = + SetupFloatSpinner(mPanel, IDC_SP_PENETRATION_DEPTH, IDC_ED_PENETRATION_DEPTH, 0, 10, 0, .1f); + mNode = NULL; const char **str; @@ -114,11 +149,29 @@ void NifProps::BeginEditParams(Interface *ip, IUtil *iu) str++; } + str = HvkMotionSystems; + while (*str) + { + mCbMotionSystem.add(*str); + str++; + } + + str = HvkQualityTypes; + while (*str) + { + mCbQualityType.add(*str); + str++; + } + selectionChanged(); } void NifProps::EndEditParams(Interface *ip,IUtil *iu) { + Spinners::iterator it; + for (it=mSpins.begin(); it!=mSpins.end(); ++it) + ReleaseISpinner(it->second); + mIU = NULL; mIP = NULL; ip->DeleteRollupPage(mPanel); @@ -131,12 +184,8 @@ void NifProps::enableGUI(BOOL obj, BOOL hvk) EnableWindow(GetDlgItem(mPanel, IDC_GRP_OBJECT), obj); EnableWindow(GetDlgItem(mPanel, IDC_CHK_ISCOLL), obj); - EnableWindow(GetDlgItem(mPanel, IDC_GRP_HAVOK), hvk); - EnableWindow(GetDlgItem(mPanel, IDC_LBL_MATERIAL), hvk); - EnableWindow(GetDlgItem(mPanel, IDC_CB_MATERIAL), hvk); - EnableWindow(GetDlgItem(mPanel, IDC_LBL_LAYER), hvk); - EnableWindow(GetDlgItem(mPanel, IDC_CB_LAYER), hvk); - EnableWindow(GetDlgItem(mPanel, IDC_BTN_APPLY), hvk); + for (int i=IDC_HVK_BEGIN; i<=IDC_HVK_END; i++) + EnableWindow(GetDlgItem(mPanel, i), hvk); } void NifProps::SelectionSetChanged(Interface *ip, IUtil *iu) @@ -156,7 +205,7 @@ void NifProps::selectionChanged() bool singleSel = numSel==1; INode *nodeSel = mIP->GetSelNode(0); - bool isColl = isCollision(nodeSel); + bool isColl = npIsCollision(nodeSel); enableGUI(singleSel, singleSel && isColl); mNode = singleSel?nodeSel:NULL; @@ -166,31 +215,51 @@ void NifProps::selectionChanged() CheckDlgButton(mPanel, IDC_CHK_ISCOLL, isColl); - int mtl, lyr; - if (!getHvkMaterial(nodeSel, mtl)) + int mtl, lyr, msys, qtype; + if (!npGetProp(nodeSel, NP_HVK_MATERIAL, mtl)) { mtl = NP_DEFAULT_HVK_MATERIAL; - setHvkMaterial(nodeSel, mtl); + npSetProp(nodeSel, NP_HVK_MATERIAL, mtl); } else mtl = max(0, min(mCbMaterial.count()-1, mtl)); - if (!getHvkLayer(nodeSel, lyr)) + if (!npGetProp(nodeSel, NP_HVK_LAYER, lyr)) { lyr = NP_DEFAULT_HVK_LAYER; - setHvkLayer(nodeSel, lyr); + npSetProp(nodeSel, NP_HVK_LAYER, lyr); } else lyr = max(0, min(mCbLayer.count()-1, lyr)); + if (!npGetProp(nodeSel, NP_HVK_MOTION_SYSTEM, msys)) + { + msys = NP_DEFAULT_HVK_MOTION_SYSTEM; + npSetProp(nodeSel, NP_HVK_MOTION_SYSTEM, msys); + + } else + msys = max(0, min(mCbMotionSystem.count()-1, msys)); + + if (!npGetProp(nodeSel, NP_HVK_QUALITY_TYPE, qtype)) + { + qtype = NP_DEFAULT_HVK_QUALITY_TYPE; + npSetProp(nodeSel, NP_HVK_QUALITY_TYPE, qtype); + + } else + qtype = max(0, min(mCbQualityType.count()-1, qtype)); + mCbMaterial.select(mtl); mCbLayer.select(lyr); + mCbMotionSystem.select(msys); + mCbQualityType.select(lyr); } void NifProps::Init(HWND hWnd) { mCbLayer.init(GetDlgItem(hWnd, IDC_CB_LAYER)); mCbMaterial.init(GetDlgItem(hWnd, IDC_CB_MATERIAL)); + mCbMotionSystem.init(GetDlgItem(hWnd, IDC_CB_MOTION_SYSTEM)); + mCbQualityType.init(GetDlgItem(hWnd, IDC_CB_QUALITY_TYPE)); } void NifProps::Destroy(HWND hWnd) @@ -214,7 +283,7 @@ BOOL NifProps::dlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) switch (LOWORD(wParam)) { case IDC_CHK_ISCOLL: - setCollision(mNode, IsDlgButtonChecked(hWnd, IDC_CHK_ISCOLL)); + npSetCollision(mNode, IsDlgButtonChecked(hWnd, IDC_CHK_ISCOLL)); selectionChanged(); break; @@ -222,7 +291,7 @@ BOOL NifProps::dlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) if (mNode && HIWORD(wParam)==CBN_SELCHANGE) { int sel = mCbMaterial.selection(); - setHvkMaterial(mNode, sel); + npSetProp(mNode, NP_HVK_MATERIAL, sel); } break; @@ -230,7 +299,23 @@ BOOL NifProps::dlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) if (mNode && HIWORD(wParam)==CBN_SELCHANGE) { int sel = mCbLayer.selection(); - setHvkLayer(mNode, sel); + npSetProp(mNode, NP_HVK_LAYER, sel); + } + break; + + case IDC_CB_MOTION_SYSTEM: + if (mNode && HIWORD(wParam)==CBN_SELCHANGE) + { + int sel = mCbMotionSystem.selection(); + npSetProp(mNode, NP_HVK_MOTION_SYSTEM, sel); + } + break; + + case IDC_CB_QUALITY_TYPE: + if (mNode && HIWORD(wParam)==CBN_SELCHANGE) + { + int sel = mCbQualityType.selection(); + npSetProp(mNode, NP_HVK_QUALITY_TYPE, sel); } break; } diff --git a/NifProps/NifProps.rc b/NifProps/NifProps.rc index 779abce..a23f776 100755 --- a/NifProps/NifProps.rc +++ b/NifProps/NifProps.rc @@ -73,22 +73,100 @@ END // Dialog // -IDD_PANEL DIALOGEX 0, 0, 108, 113 +IDD_PANEL DIALOGEX 0, 0, 107, 402 STYLE DS_SETFONT | DS_3DLOOK | WS_CHILD | WS_VISIBLE FONT 8, "MS Sans Serif", 0, 0, 0x0 BEGIN - COMBOBOX IDC_CB_MATERIAL,13,61,80,157,CBS_DROPDOWNLIST | - WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CB_MATERIAL,12,130,83,157,CBS_DROPDOWNLIST | + WS_DISABLED | WS_VSCROLL | WS_TABSTOP CONTROL "Material",IDC_LBL_MATERIAL,"Static",SS_LEFTNOWORDWRAP | - SS_CENTERIMAGE | WS_GROUP,12,52,80,8 - COMBOBOX IDC_CB_LAYER,14,85,80,171,CBS_DROPDOWNLIST | WS_VSCROLL | - WS_TABSTOP + SS_CENTERIMAGE | WS_DISABLED | WS_GROUP,12,121,83,8 + COMBOBOX IDC_CB_LAYER,12,154,83,171,CBS_DROPDOWNLIST | + WS_DISABLED | WS_VSCROLL | WS_TABSTOP CONTROL "Layer",IDC_LBL_LAYER,"Static",SS_LEFTNOWORDWRAP | - SS_CENTERIMAGE | WS_GROUP,12,76,80,8 - GROUPBOX "Havok",IDC_GRP_HAVOK,7,42,94,64 - GROUPBOX "Object",IDC_GRP_OBJECT,7,7,94,32 + SS_CENTERIMAGE | WS_DISABLED | WS_GROUP,12,145,83,8 + GROUPBOX "Havok",IDC_GRP_HAVOK,5,110,95,285,WS_DISABLED + GROUPBOX "Object",IDC_GRP_OBJECT,5,76,95,32 CONTROL "Is Collision Mesh",IDC_CHK_ISCOLL,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,14,20,80,10 + BS_AUTOCHECKBOX | WS_TABSTOP,14,89,80,10 + GROUPBOX "Global",IDC_STATIC,5,7,95,65 + EDITTEXT IDC_ED_BSXFLAGS,13,30,80,12,ES_AUTOHSCROLL + CONTROL "BSXFlags",IDC_LBL_BSXFLAGS,"Static",SS_LEFTNOWORDWRAP | + SS_CENTERIMAGE | WS_GROUP,13,18,80,8 + EDITTEXT IDC_ED_STRINGSEXTRA,13,52,80,12,ES_AUTOHSCROLL + CONTROL "Strings Extra Data",IDC_LBL_STRINGSEXTRA,"Static", + SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_GROUP,13,43,80,8 + CONTROL "Center",IDC_LBL_CENTER,"Static",SS_LEFTNOWORDWRAP | + SS_CENTERIMAGE | WS_DISABLED | WS_GROUP,12,170,31,8 + CONTROL "Mass",IDC_LBL_MASS,"Static",SS_LEFTNOWORDWRAP | + WS_DISABLED | WS_GROUP,12,195,28,8 + CONTROL "Friction",IDC_LBL_FRICTION,"Static",SS_LEFTNOWORDWRAP | + WS_DISABLED | WS_GROUP,42,195,28,8 + LTEXT "Resti-\r\ntution",IDC_LBL_RESTITUTION,70,195,24,15, + WS_DISABLED + CONTROL "Motion System",IDC_LBL_MOTION_SYSTEM,"Static", + SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_DISABLED | + WS_GROUP,12,335,67,8 + COMBOBOX IDC_CB_MOTION_SYSTEM,12,344,83,74,CBS_DROPDOWNLIST | + WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "Quality Type",IDC_LBL_QUALITY_TYPE,"Static", + SS_LEFTNOWORDWRAP | SS_CENTERIMAGE | WS_DISABLED | + WS_GROUP,12,360,43,8 + COMBOBOX IDC_CB_QUALITY_TYPE,12,369,83,63,CBS_DROPDOWN | + WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_ED_CENTER_X,"CustEdit",WS_DISABLED | WS_TABSTOP, + 12,180,20,10 + CONTROL "",IDC_SP_CENTER_X,"SpinnerControl",WS_DISABLED,30,180,7, + 10 + CONTROL "",IDC_ED_CENTER_Y,"CustEdit",WS_DISABLED | WS_TABSTOP, + 42,180,20,10 + CONTROL "",IDC_SP_CENTER_Y,"SpinnerControl",WS_DISABLED,60,180,7, + 10 + CONTROL "",IDC_ED_CENTER_Z,"CustEdit",WS_DISABLED | WS_TABSTOP, + 72,180,20,10 + CONTROL "",IDC_SP_CENTER_Z,"SpinnerControl",WS_DISABLED,92,180,7, + 10 + CONTROL "",IDC_ED_MASS,"CustEdit",WS_DISABLED | WS_TABSTOP,12, + 215,20,10 + CONTROL "",IDC_SP_MASS,"SpinnerControl",WS_DISABLED,30,215,7,10 + CONTROL "",IDC_ED_FRICTION,"CustEdit",WS_DISABLED | WS_TABSTOP, + 42,215,20,10 + CONTROL "",IDC_SP_FRICTION,"SpinnerControl",WS_DISABLED,60,215,7, + 10 + CONTROL "",IDC_ED_RESTITUTION,"CustEdit",WS_DISABLED | + WS_TABSTOP,70,215,20,10 + CONTROL "",IDC_SP_RESTITUTION,"SpinnerControl",WS_DISABLED,90, + 215,7,10 + LTEXT "Linear\r\nDamping",IDC_LBL_LINEAR_DAMPING,12,230,30,17, + WS_DISABLED + CONTROL "",IDC_ED_LINEAR_DAMPING,"CustEdit",WS_DISABLED | + WS_TABSTOP,12,250,35,10 + CONTROL "",IDC_SP_LINEAR_DAMPING,"SpinnerControl",WS_DISABLED,45, + 250,7,10 + LTEXT "Angular\r\nDamping",IDC_LBL_ANGULAR_DAMPING,55,230,45, + 17,WS_DISABLED + CONTROL "",IDC_ED_ANGULAR_DAMPING,"CustEdit",WS_DISABLED | + WS_TABSTOP,55,250,35,10 + CONTROL "",IDC_SP_ANGULAR_DAMPING,"SpinnerControl",WS_DISABLED, + 90,250,7,10 + LTEXT "Max. Linear\r\nVelocity",IDC_LBL_MAX_LINEAR_VELOCITY,12, + 265,40,16,WS_DISABLED + CONTROL "",IDC_ED_MAX_LINEAR_VELOCITY,"CustEdit",WS_DISABLED | + WS_TABSTOP,12,285,35,10 + CONTROL "",IDC_SP_MAX_LINEAR_VELOCITY,"SpinnerControl", + WS_DISABLED,45,285,7,10 + LTEXT "Max. Angular\r\nVelocity",IDC_LBL_MAX_ANGULAR_VELOCITY, + 55,265,45,16,WS_DISABLED + CONTROL "",IDC_ED_MAX_ANGULAR_VELOCITY,"CustEdit",WS_DISABLED | + WS_TABSTOP,55,285,35,10 + CONTROL "",IDC_SP_MAX_ANGULAR_VELOCITY,"SpinnerControl", + WS_DISABLED,90,285,7,10 + LTEXT "Penetration\r\nDepth",IDC_LBL_PENETRATION_DEPTH,12,300, + 40,16,WS_DISABLED + CONTROL "",IDC_ED_PENETRATION_DEPTH,"CustEdit",WS_DISABLED | + WS_TABSTOP,12,320,35,10 + CONTROL "",IDC_SP_PENETRATION_DEPTH,"SpinnerControl",WS_DISABLED, + 45,320,7,10 END @@ -103,9 +181,9 @@ BEGIN IDD_PANEL, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 101 + RIGHTMARGIN, 100 TOPMARGIN, 7 - BOTTOMMARGIN, 106 + BOTTOMMARGIN, 395 END END #endif // APSTUDIO_INVOKED diff --git a/NifProps/NifStrings.h b/NifProps/NifStrings.h index 8770768..9e232b5 100755 --- a/NifProps/NifStrings.h +++ b/NifProps/NifStrings.h @@ -95,3 +95,31 @@ static const char *HvkLayerNames[] = "Wing", NULL }; + +static const char *HvkMotionSystems[] = +{ + "Keyframed", + "Box (2)", + "Sphere (2)", + "Sphere (3)", + "Box (4)", + "Box (5)", + "Keyframed (6)", + "Keyframed (7)", + "Box", + "Keyframed?", + NULL +}; + +static const char *HvkQualityTypes[] = +{ + "Moving", + "Fixed", + "Keyframed", + "Moving(?)", + "Critical", + "Bullet", + "User", + "Null", + NULL +}; diff --git a/NifProps/resource.h b/NifProps/resource.h index d99baf4..d9cfbe8 100755 --- a/NifProps/resource.h +++ b/NifProps/resource.h @@ -8,22 +8,54 @@ #define IDS_PARAMS 4 #define IDS_SPIN 5 #define IDD_PANEL 101 -#define IDC_CLOSEBUTTON 1000 -#define IDC_DOSTUFF 1000 -#define IDC_ISCOLL 1000 -#define IDC_CB_MATERIAL 1001 -#define IDC_CB_LAYER 1002 -#define IDC_LBL_HEADER 1003 -#define IDC_CHK_ISCOLL 1003 -#define IDC_LBL_MATERIAL 1004 -#define IDC_LBL_LAYER 1005 -#define IDC_BTN_APPLY 1006 -#define IDC_BUTTON1 1006 +#define IDC_LBL_BSXFLAGS 1001 +#define IDC_ED_BSXFLAGS 1002 +#define IDC_ED_STRINGSEXTRA 1003 +#define IDC_LBL_STRINGSEXTRA 1004 +#define IDC_GRP_OBJECT 1005 +#define IDC_CHK_ISCOLL 1006 #define IDC_GRP_HAVOK 1007 -#define IDC_GRP_OBJECT 1008 -#define IDC_COLOR 1456 -#define IDC_EDIT 1490 -#define IDC_SPIN 1496 +#define IDC_HVK_BEGIN IDC_GRP_HAVOK +#define IDC_LBL_MATERIAL 1008 +#define IDC_CB_MATERIAL 1009 +#define IDC_LBL_LAYER 1010 +#define IDC_CB_LAYER 1011 +#define IDC_LBL_CENTER 1012 +#define IDC_ED_CENTER_X 1490 +#define IDC_SP_CENTER_X 1491 +#define IDC_ED_CENTER_Y 1492 +#define IDC_SP_CENTER_Y 1493 +#define IDC_ED_CENTER_Z 1494 +#define IDC_SP_CENTER_Z 1495 +#define IDC_LBL_MASS 1496 +#define IDC_ED_MASS 1497 +#define IDC_SP_MASS 1498 +#define IDC_LBL_FRICTION 1499 +#define IDC_ED_FRICTION 1500 +#define IDC_SP_FRICTION 1501 +#define IDC_LBL_RESTITUTION 1502 +#define IDC_ED_RESTITUTION 1503 +#define IDC_SP_RESTITUTION 1504 +#define IDC_LBL_MAX_LINEAR_VELOCITY 1505 +#define IDC_ED_MAX_LINEAR_VELOCITY 1506 +#define IDC_SP_MAX_LINEAR_VELOCITY 1507 +#define IDC_LBL_MAX_ANGULAR_VELOCITY 1508 +#define IDC_ED_MAX_ANGULAR_VELOCITY 1509 +#define IDC_SP_MAX_ANGULAR_VELOCITY 1510 +#define IDC_LBL_PENETRATION_DEPTH 1511 +#define IDC_ED_PENETRATION_DEPTH 1512 +#define IDC_SP_PENETRATION_DEPTH 1513 +#define IDC_LBL_LINEAR_DAMPING 1514 +#define IDC_ED_LINEAR_DAMPING 1515 +#define IDC_SP_LINEAR_DAMPING 1516 +#define IDC_LBL_ANGULAR_DAMPING 1517 +#define IDC_ED_ANGULAR_DAMPING 1518 +#define IDC_SP_ANGULAR_DAMPING 1519 +#define IDC_LBL_MOTION_SYSTEM 1520 +#define IDC_CB_MOTION_SYSTEM 1521 +#define IDC_LBL_QUALITY_TYPE 1522 +#define IDC_CB_QUALITY_TYPE 1523 +#define IDC_HVK_END IDC_CB_QUALITY_TYPE // Next default values for new objects // @@ -31,7 +63,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 103 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1010 +#define _APS_NEXT_CONTROL_VALUE 1035 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif -- GitLab