From c4e39fe108612c626d21ed54638971d539e25a86 Mon Sep 17 00:00:00 2001
From: Tazpn <tazpn@users.sourceforge.net>
Date: Sat, 21 Jul 2007 17:55:33 +0000
Subject: [PATCH]   0.2.16   ----- o All   - Add support for Loki, Pro Cycling
 Manager (version 10.2.0.0)   - Add support for Megami Tensei: Imagine
 (version 20.1.0.3)   - Add support for Emerge Demo (versions 20.3.0.3 and
 20.3.0.6) o Importer   - Add Weld Vertices option o Exporter   - Remove
 veryrxv change because it breaks Oblivion export o Props   - Add Clone Mesh
 button on Collision Modifier and bhk Proxy Object

---
 MaxNifTools.ini         |  4 +++-
 MaxNifTools.iss         |  6 ++---
 NifExport/Config.cpp    |  8 ++++---
 NifExport/Exporter.cpp  |  3 ++-
 NifExport/Exporter.h    |  1 +
 NifExport/Mesh.cpp      | 15 ++++++------
 NifExport/NifExport.cpp |  7 +++---
 NifExport/NifExport.rc  | 53 +++++++++++++++++++++--------------------
 NifExport/resource.h    |  2 ++
 NifPlugins_VC80.vcproj  | 32 ++++++++++++-------------
 10 files changed, 70 insertions(+), 61 deletions(-)

diff --git a/MaxNifTools.ini b/MaxNifTools.ini
index f612417..fca7cba 100644
--- a/MaxNifTools.ini
+++ b/MaxNifTools.ini
@@ -84,8 +84,10 @@ BonesPerPartition=18
 UseTimeTags=0
 ; Allow Accumulation when exporting
 AllowAccum=1
-; Collapse Transforms to final position. Default: 1
+; Reset Transforms to fix scaling issues. Default: 1
 CollapseTransforms=1
+; Apply Object Transforms to Vertices. Default: 0
+ZeroTransforms=1
 ; Add Tangent and Binormal Extra Data block. Default: 0
 TangentAndBinormalExtraData=0
 FixNormals=0
diff --git a/MaxNifTools.iss b/MaxNifTools.iss
index acbaaf1..e0afc9c 100644
--- a/MaxNifTools.iss
+++ b/MaxNifTools.iss
@@ -6,7 +6,7 @@ AppName=NIF Utilities for 3ds Max
 AppVerName=NIF Utilities {code:CurVer} for 3ds Max
 AppPublisher=NIF File Format Library and Tools
 AppCopyright=Copyright © 2007, NIF File Format Library and Tools
-OutputBaseFilename=niftools-max-plugins-0.2.15.1
+OutputBaseFilename=niftools-max-plugins-0.2.16.0
 DisableProgramGroupPage=yes
 Compression=lzma
 SolidCompression=yes
@@ -18,7 +18,7 @@ UninstallFilesDir={win}{\}Installer\NifTools
 Uninstallable=yes
 DisableDirPage=yes
 ArchitecturesInstallIn64BitMode=x64
-VersionInfoVersion=0.2.15.1
+VersionInfoVersion=0.2.16.0
 
 SourceDir=.
 ;UninstallDisplayIcon={app}{\}..\Oblivion.exe
@@ -103,7 +103,7 @@ var sVersion: String;
 
 function InitializeSetup(): Boolean;
 begin
-  sVersion := '0.2.15';
+  sVersion := '0.2.16';
   Result := True;
 end;
 
diff --git a/NifExport/Config.cpp b/NifExport/Config.cpp
index 5729faf..98b04cd 100755
--- a/NifExport/Config.cpp
+++ b/NifExport/Config.cpp
@@ -80,7 +80,8 @@ void Exporter::writeConfig(Interface *i)
       //SetIniValue(NifExportSection, "UseTimeTags", mUseTimeTags, iniName);
 
       SetIniValue(NifExportSection, "AllowAccum", mAllowAccum, iniName);
-      SetIniValue(NifExportSection, "CollapseTransforms", mCollapseTransforms, iniName);
+	  SetIniValue(NifExportSection, "CollapseTransforms", mCollapseTransforms, iniName);
+	  SetIniValue(NifExportSection, "ZeroTransforms", mZeroTransforms, iniName);
       SetIniValue(NifExportSection, "FixNormals", mFixNormals, iniName);
       SetIniValue(NifExportSection, "TangentAndBinormalExtraData", mTangentAndBinormalExtraData, iniName);
       SetIniValue(NifExportSection, "UseAlternateStripper", mUseAlternateStripper, iniName);
@@ -153,8 +154,9 @@ void Exporter::readConfig(Interface *i)
 
       //mUseTimeTags = GetIniValue(NifExportSection, "UseTimeTags", false, iniName);
       mAllowAccum = GetIniValue(NifExportSection, "AllowAccum", true, iniName);
-      mCollapseTransforms = GetIniValue(NifExportSection, "CollapseTransforms", false, iniName);
-      mFixNormals = GetIniValue(NifExportSection, "FixNormals", false, iniName);
+	  mCollapseTransforms = GetIniValue(NifExportSection, "CollapseTransforms", false, iniName);
+	  mZeroTransforms = GetIniValue(NifExportSection, "ZeroTransforms", false, iniName);
+	  mFixNormals = GetIniValue(NifExportSection, "FixNormals", false, iniName);
       mTangentAndBinormalExtraData = GetIniValue(NifExportSection, "TangentAndBinormalExtraData", false, iniName);
 
       mUseAlternateStripper = GetIniValue(NifExportSection, "UseAlternateStripper", false, iniName);
diff --git a/NifExport/Exporter.cpp b/NifExport/Exporter.cpp
index c9c21de..525cc25 100755
--- a/NifExport/Exporter.cpp
+++ b/NifExport/Exporter.cpp
@@ -40,7 +40,8 @@ bool Exporter::mUseTimeTags = false;
 bool Exporter::mAutoDetect = true;
 bool Exporter::mAllowAccum = true;
 string Exporter::mCreatorName;
-bool Exporter::mCollapseTransforms = true;
+bool Exporter::mCollapseTransforms = false;
+bool Exporter::mZeroTransforms = false;
 bool Exporter::mFixNormals = false;
 bool Exporter::mTangentAndBinormalExtraData = false;
 bool Exporter::mSupportPrnStrings = false;
diff --git a/NifExport/Exporter.h b/NifExport/Exporter.h
index 580f3aa..54b7f19 100755
--- a/NifExport/Exporter.h
+++ b/NifExport/Exporter.h
@@ -103,6 +103,7 @@ public:
 	static bool          mAllowAccum;
 	static string        mCreatorName;
 	static bool          mCollapseTransforms;
+	static bool			 mZeroTransforms;
 	static bool          mFixNormals;
 	static bool          mTangentAndBinormalExtraData;
 	static stringlist    mRotate90Degrees;
diff --git a/NifExport/Mesh.cpp b/NifExport/Mesh.cpp
index a101973..7358c7d 100755
--- a/NifExport/Mesh.cpp
+++ b/NifExport/Mesh.cpp
@@ -27,16 +27,15 @@ Exporter::Result Exporter::exportMesh(NiNodeRef &ninode, INode *node, TimeValue
 	Mesh *copymesh = NULL;
 	Mesh *mesh = &tri->GetMesh();
 
-	Matrix3 mtx(true);
+	Matrix3 mtx(true), rtx(true);
 	if (Exporter::mCollapseTransforms)
 	{
 		mtx = GetNodeLocalTM(node, t);
-		//if ( fabs(mtx.GetRow(0)[0]) != fabs(mtx.GetRow(1)[1])
-		//   ||fabs(mtx.GetRow(0)[0]) != fabs(mtx.GetRow(2)[2])
-		//   )
+		mtx.NoTrans();
+		Quat q(mtx);
+		q.MakeMatrix(rtx);
+		mesh = copymesh = new Mesh(*mesh);
 		{
-			mtx.NoTrans();    
-			mesh = copymesh = new Mesh(*mesh);     
 			int n = mesh->getNumVerts();
 			for ( unsigned int i = 0; i < n; ++i ) {
 				Point3& vert = mesh->getVert(i);
@@ -49,7 +48,7 @@ Exporter::Result Exporter::exportMesh(NiNodeRef &ninode, INode *node, TimeValue
 				specNorms->CheckNormals();
 				for ( unsigned int i = 0; i < specNorms->GetNumNormals(); ++i ) {
 					Point3& norm = specNorms->Normal(i);
-					norm = (mtx * norm).Normalize();
+					norm = (rtx * norm).Normalize();
 				}
 			}
 #endif
@@ -150,7 +149,7 @@ Exporter::Result Exporter::exportMesh(NiNodeRef &ninode, INode *node, TimeValue
 			shape->SetName(name);
 			shape->SetLocalTransform(tm);
 
-			if (Exporter::mCollapseTransforms) {
+			if (Exporter::mZeroTransforms) {
 				shape->ApplyTransforms();
 			}
 
diff --git a/NifExport/NifExport.cpp b/NifExport/NifExport.cpp
index a0eba2b..c920868 100755
--- a/NifExport/NifExport.cpp
+++ b/NifExport/NifExport.cpp
@@ -111,8 +111,8 @@ INT_PTR CALLBACK NifExportOptionsDlgProc(HWND hWnd,UINT message,WPARAM wParam,LP
          CheckDlgButton(hWnd, IDC_CHK_CAMERA, Exporter::mExportCameras);
          CheckDlgButton(hWnd, IDC_CHK_BONE_COLL, Exporter::mGenerateBoneCollision);            
          CheckDlgButton(hWnd, IDC_CHK_TANGENTS, Exporter::mTangentAndBinormalExtraData);
-         CheckDlgButton(hWnd, IDC_CHK_COLLAPSE_TRANS, Exporter::mCollapseTransforms);
-         
+		 CheckDlgButton(hWnd, IDC_CHK_COLLAPSE_TRANS, Exporter::mCollapseTransforms);
+		 CheckDlgButton(hWnd, IDC_CHK_ZERO_TRANS, Exporter::mZeroTransforms);
 
          string selection = Exporter::mGameName;
          string version = Exporter::mNifVersion;
@@ -199,7 +199,8 @@ INT_PTR CALLBACK NifExportOptionsDlgProc(HWND hWnd,UINT message,WPARAM wParam,LP
             Exporter::mExportCameras = IsDlgButtonChecked(hWnd, IDC_CHK_CAMERA);
             Exporter::mGenerateBoneCollision = IsDlgButtonChecked(hWnd, IDC_CHK_BONE_COLL);
             Exporter::mTangentAndBinormalExtraData = IsDlgButtonChecked(hWnd, IDC_CHK_TANGENTS);
-            Exporter::mCollapseTransforms = IsDlgButtonChecked(hWnd, IDC_CHK_COLLAPSE_TRANS);
+			Exporter::mCollapseTransforms = IsDlgButtonChecked(hWnd, IDC_CHK_COLLAPSE_TRANS);
+			Exporter::mZeroTransforms = IsDlgButtonChecked(hWnd, IDC_CHK_ZERO_TRANS);
 
             Exporter::mExportTransforms = IsDlgButtonChecked(hWnd, IDC_CHK_TRANSFORMS2);
             //Exporter::mUseTimeTags = IsDlgButtonChecked(hWnd, IDC_CHK_USE_TIME_TAGS);           
diff --git a/NifExport/NifExport.rc b/NifExport/NifExport.rc
index c60ca4a..12a6994 100755
--- a/NifExport/NifExport.rc
+++ b/NifExport/NifExport.rc
@@ -34,7 +34,7 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
 
 3 TEXTINCLUDE 
 BEGIN
-    "\r\n"
+    "\r\0"
 END
 
 #endif    // APSTUDIO_INVOKED
@@ -107,7 +107,7 @@ BEGIN
     CONTROL         "http://niftools.sourceforge.net",IDC_LBL_LINK,"Button",BS_OWNERDRAW | WS_TABSTOP,80,109,120,14
 END
 
-IDD_NIF_PANEL DIALOGEX 0, 0, 229, 287
+IDD_NIF_PANEL DIALOGEX 0, 0, 229, 296
 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_TOOLWINDOW
 CAPTION "Export Nif"
@@ -130,14 +130,14 @@ BEGIN
     CONTROL         "Cameras",IDC_CHK_CAMERA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,82,67,10
     CONTROL         "&Lights",IDC_CHK_LIGHTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,93,67,10
     CONTROL         "Furniture &Markers",IDC_CHK_FURN,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,120,105,67,10
-    GROUPBOX        "Mesh:",IDC_STATIC,4,123,108,81
-    CONTROL         "Generate &Strips",IDC_CHK_STRIPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,134,82,10
-    CONTROL         "Extra Nodes on Mesh",IDC_CHK_EXTRA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,145,82,11
-    CONTROL         "Flatten Hierarchy",IDC_CHK_HIER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,158,82,10
-    CONTROL         "&Vertex Colors",IDC_CHK_VCOLORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,170,67,10
-    CONTROL         "Update Tangent Space",IDC_CHK_TANGENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,181,101,10
-    CONTROL         "Collapse Transforms",IDC_CHK_COLLAPSE_TRANS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,192,98,9
-    GROUPBOX        "Skin Modifier",IDC_STATIC,116,123,108,81
+    GROUPBOX        "Mesh:",IDC_STATIC,4,122,108,91
+    CONTROL         "Generate &Strips",IDC_CHK_STRIPS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,132,82,10
+    CONTROL         "Extra Nodes on Mesh",IDC_CHK_EXTRA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,143,82,11
+    CONTROL         "Flatten Hierarchy",IDC_CHK_HIER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,155,82,10
+    CONTROL         "&Vertex Colors",IDC_CHK_VCOLORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,167,67,10
+    CONTROL         "Update Tangent Space",IDC_CHK_TANGENTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,178,101,10
+    CONTROL         "Collapse Transforms",IDC_CHK_COLLAPSE_TRANS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,189,98,9
+    GROUPBOX        "Skin Modifier",IDC_STATIC,116,122,108,91
     CONTROL         "Export Skin Modifier",IDC_CHK_SKIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,134,93,10
     CONTROL         "Enable Multiple Partitions",IDC_CHK_SKINPART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,147,93,10
     LTEXT           "Bones Per Partition:",IDC_LBL_BONES_PART,130,160,62,8
@@ -145,23 +145,24 @@ BEGIN
     LTEXT           "Bones Per Vertex:",IDC_LBL_BONES_VERTEX,120,174,63,8
     EDITTEXT        IDC_ED_BONES_VERTEX,195,173,24,12,ES_AUTOHSCROLL
     CONTROL         "Remove Extra Bones",IDC_CHK_REM_BONES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,119,187,82,10
-    GROUPBOX        "Animation",IDC_GRP_ANIMATION,4,205,108,56
-    COMBOBOX        IDC_CBO_ANIM_TYPE,7,216,85,69,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-    CONTROL         "Transforms",IDC_CHK_TRANSFORMS2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,232,67,10
-    LTEXT           "Priority:",IDC_LBL_PRIORITY2,9,245,23,8
-    EDITTEXT        IDC_ED_PRIORITY2,37,244,55,12,ES_AUTOHSCROLL
-    GROUPBOX        "Miscellaneous:",IDC_STATIC,115,205,109,56
-    CONTROL         "Add User Prop Buffer",IDC_CHK_UPB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,218,82,11
-    CONTROL         "Sort Nodes",IDC_CHK_SORTNODES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,230,82,10
-    CONTROL         "Add Accum Nodes",IDC_CHK_ALLOW_ACCUM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,242,82,10
-    LTEXT           "Auto-&Weld",IDC_LBL_WELDTHRESH,125,255,47,8,NOT WS_VISIBLE | WS_DISABLED
-    EDITTEXT        IDC_ED_WELDTHRESH,179,252,43,12,ES_AUTOHSCROLL | NOT WS_VISIBLE | WS_DISABLED
-    DEFPUSHBUTTON   "&Export",IDOK,5,266,34,14
-    PUSHBUTTON      "&Cancel",IDCANCEL,45,266,33,14
+    GROUPBOX        "Animation",IDC_GRP_ANIMATION,4,216,108,56
+    COMBOBOX        IDC_CBO_ANIM_TYPE,7,227,85,69,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+    CONTROL         "Transforms",IDC_CHK_TRANSFORMS2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,243,67,10
+    LTEXT           "Priority:",IDC_LBL_PRIORITY2,9,256,23,8
+    EDITTEXT        IDC_ED_PRIORITY2,37,255,55,12,ES_AUTOHSCROLL
+    GROUPBOX        "Miscellaneous:",IDC_STATIC,115,216,109,56
+    CONTROL         "Add User Prop Buffer",IDC_CHK_UPB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,229,82,11
+    CONTROL         "Sort Nodes",IDC_CHK_SORTNODES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,241,82,10
+    CONTROL         "Add Accum Nodes",IDC_CHK_ALLOW_ACCUM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,253,82,10
+    LTEXT           "Auto-&Weld",IDC_LBL_WELDTHRESH,125,266,47,8,NOT WS_VISIBLE | WS_DISABLED
+    EDITTEXT        IDC_ED_WELDTHRESH,179,263,43,12,ES_AUTOHSCROLL | NOT WS_VISIBLE | WS_DISABLED
+    DEFPUSHBUTTON   "&Export",IDOK,5,275,34,14
+    PUSHBUTTON      "&Cancel",IDCANCEL,45,275,33,14
     CONTROL         "Gen. Bone Collision",IDC_CHK_BONE_COLL,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,151,7,73,10
     CONTROL         "&Remap Indices",IDC_CHK_REMAP,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED | WS_TABSTOP,152,7,72,10
-    LTEXT           "niftools.sourceforge.net",IDC_LBL_LINK,110,266,80,14,SS_NOTIFY | SS_CENTERIMAGE
-    LTEXT           "Wiki",IDC_LBL_WIKI,203,266,22,14,SS_NOTIFY | SS_CENTERIMAGE
+    LTEXT           "niftools.sourceforge.net",IDC_LBL_LINK,110,275,80,14,SS_NOTIFY | SS_CENTERIMAGE
+    LTEXT           "Wiki",IDC_LBL_WIKI,203,275,22,14,SS_NOTIFY | SS_CENTERIMAGE
+    CONTROL         "Zero Transforms",IDC_CHK_ZERO_TRANS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,200,98,9
 END
 
 
@@ -186,7 +187,7 @@ BEGIN
         LEFTMARGIN, 4
         RIGHTMARGIN, 224
         TOPMARGIN, 7
-        BOTTOMMARGIN, 280
+        BOTTOMMARGIN, 289
     END
 END
 #endif    // APSTUDIO_INVOKED
diff --git a/NifExport/resource.h b/NifExport/resource.h
index 3bc59f1..d81ee08 100755
--- a/NifExport/resource.h
+++ b/NifExport/resource.h
@@ -66,6 +66,8 @@
 #define IDC_CHK_TANGENTS                13498
 #define IDC_CHECK2                      13499
 #define IDC_CHK_COLLAPSE_TRANS          13499
+#define IDC_CHK_COLLAPSE_TRANS2         13500
+#define IDC_CHK_ZERO_TRANS              13500
 
 // Next default values for new objects
 // 
diff --git a/NifPlugins_VC80.vcproj b/NifPlugins_VC80.vcproj
index 21f6459..38786f2 100644
--- a/NifPlugins_VC80.vcproj
+++ b/NifPlugins_VC80.vcproj
@@ -262,7 +262,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax6\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -364,7 +364,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax6\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -676,7 +676,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax7\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -778,7 +778,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax7\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -1090,7 +1090,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax8\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -1192,7 +1192,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax8\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -1294,7 +1294,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax5\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -1397,7 +1397,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax5\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -1711,7 +1711,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="0"
 				AdditionalIncludeDirectories="C:\3dsmax9\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK;_SCL_SECURE_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="1"
@@ -1814,7 +1814,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax9\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;USE_BIPED;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="1"
@@ -2336,7 +2336,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax4\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -2439,7 +2439,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax4\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -2542,7 +2542,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\gmax12\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;GAME_VER;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;GAME_VER;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -2645,7 +2645,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\gmax12\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;GAME_VER;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;GAME_VER;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -2958,7 +2958,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax42\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
@@ -3061,7 +3061,7 @@
 				Optimization="0"
 				InlineFunctionExpansion="2"
 				AdditionalIncludeDirectories="C:\3dsmax42\maxsdk\include;..\niflib\include;..\niflib;.\NifCommon"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_SCL_SECURE_NO_WARNINGS;USE_NIFLIB_TEMPLATE_HELPERS;_USE_MATH_DEFINES;USE_UNSUPPORTED_CODE;NIFLIB_STATIC_LINK"
 				GeneratePreprocessedFile="0"
 				MinimalRebuild="true"
 				ExceptionHandling="2"
-- 
GitLab