diff --git a/NifPlugins.cpp b/NifPlugins.cpp index e9b0a44eec7aa5f1d30301d0ed89f4b34a0f15c0..01dc17f062e521ec69742ee2708bf25e8ef6cff2 100755 --- a/NifPlugins.cpp +++ b/NifPlugins.cpp @@ -1,36 +1,37 @@ #include "Max.h" #include "NifPlugins.h" -bool isCollision(INode *node) +bool npIsCollision(INode *node) { - BOOL b; - return node && node->GetUserPropBool(_T(NP_PROP_HASCOLL), b) && b; + int i; + return npGetProp(node, NP_HASCOLL, i) && i; } -void setCollision(INode *node, bool coll) +void npSetCollision(INode *node, bool coll) { - if (node) - node->SetUserPropBool(_T(NP_PROP_HASCOLL), coll); + npSetProp(node, NP_HASCOLL, (bool)coll); } -bool getHvkLayer(INode *node, int &layer) +bool npGetProp(INode *node, const TSTR &prop, int &value) { - return node && node->GetUserPropInt(_T(NP_PROP_HVK_LAYER), layer); + return node && node->GetUserPropInt(prop, value); } -void setHvkLayer(INode *node, int layer) +void npSetProp(INode *node, const TSTR &prop, int value) { if (node) - node->SetUserPropInt(_T(NP_PROP_HVK_LAYER), layer); + node->SetUserPropInt(prop, value); } -bool getHvkMaterial(INode *node, int &mtl) +bool npGetProp(INode *node, const TSTR &prop, float &value) { - return node && node->GetUserPropInt(_T(NP_PROP_HVK_MATERIAL), mtl); + return node && node->GetUserPropFloat(prop, value); } -void setHvkMaterial(INode *node, int mtl) +void npSetProp(INode *node, const TSTR &prop, float value) { if (node) - node->SetUserPropInt(_T(NP_PROP_HVK_MATERIAL), mtl); + node->SetUserPropFloat(prop, value); } + + diff --git a/NifPlugins.h b/NifPlugins.h index 181cd088f56d010dd842ea3a8f3569ebbb99087e..349216d47228546835f1734ebf20692b96291753 100755 --- a/NifPlugins.h +++ b/NifPlugins.h @@ -1,20 +1,40 @@ #ifndef __NIFPLUGINS_H__ #define __NIFPLUGINS_H__ -#define NP_PROP_HASCOLL "np_coll" -#define NP_PROP_HVK_LAYER "np_hvk_layer" -#define NP_PROP_HVK_MATERIAL "np_hvk_mtl" +#define NP_HASCOLL _T("np_coll") +#define NP_HVK_LAYER _T("np_hvk_layer") +#define NP_HVK_MATERIAL _T("np_hvk_mtl") +#define NP_HVK_MASS _T("np_hvk_mass") +#define NP_HVK_LINEAR_DAMPING _T("np_hvk_ldamp") +#define NP_HVK_ANGULAR_DAMPING _T("np_hvk_adamp") +#define NP_HVK_FRICTION _T("np_hvk_frict") +#define NP_HVK_RESTITUTION _T("np_hvk_resti") +#define NP_HVK_MAX_LINEAR_VELOCITY _T("np_hvk_max_lvel") +#define NP_HVK_MAX_ANGULAR_VELOCITY _T("np_hvk_max_avel") +#define NP_HVK_PENETRATION_DEPTH _T("np_hvk_pdepth") +#define NP_HVK_MOTION_SYSTEM _T("np_hvk_msys") +#define NP_HVK_QUALITY_TYPE _T("np_hvk_qtype") -#define NP_DEFAULT_HVK_MATERIAL 9 -#define NP_DEFAULT_HVK_LAYER 1 +#define NP_DEFAULT_HVK_MATERIAL 9 +#define NP_DEFAULT_HVK_LAYER 1 +#define NP_DEFAULT_HVK_MASS 0 +#define NP_DEFAULT_HVK_LINEAR_DAMPING 0.1f +#define NP_DEFAULT_HVK_ANGULAR_DAMPING 0.05f +#define NP_DEFAULT_HVK_FRICTION 0.3f +#define NP_DEFAULT_HVK_RESTITUTION 0.3f +#define NP_DEFAULT_HVK_MAX_LINEAR_VELOCITY 250.0f +#define NP_DEFAULT_HVK_MAX_ANGULAR_VELOCITY 31.4159f +#define NP_DEFAULT_HVK_PENETRATION_DEPTH 0.15f +#define NP_DEFAULT_HVK_MOTION_SYSTEM 7 +#define NP_DEFAULT_HVK_QUALITY_TYPE 1 -bool isCollision(INode *node); -void setCollision(INode *node, bool coll); +bool npIsCollision(INode *node); +void npSetCollision(INode *node, bool coll); -bool getHvkLayer(INode *node, int &layer); -void setHvkLayer(INode *node, int layer); +bool npGetProp(INode *node, const TSTR &prop, int &value); +void npSetProp(INode *node, const TSTR &prop, int value); -bool getHvkMaterial(INode *node, int &mtl); -void setHvkMaterial(INode *node, int mtl); +bool npGetProp(INode *node, const TSTR &prop, float &value); +void npSetProp(INode *node, const TSTR &prop, float value); #endif // __NIFPLUGINS_H__