Skip to content

Commit 54a2096

Browse files
committed
2.7.1: add option to enable filter, save blend menu item
1 parent 62b2a21 commit 54a2096

File tree

11 files changed

+148
-70
lines changed

11 files changed

+148
-70
lines changed

.idea/editor.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ cmake_policy(SET CMP0141 NEW)
33
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<CONFIG:Debug>,EditAndContinue,ProgramDatabase>" CACHE STRING "MSVC debug information format")
44
project(
55
NavKit
6-
VERSION 2.6.1
6+
VERSION 2.7.1
77
DESCRIPTION "An app to create NAVP and AIRG files for use with Hitman: World of Assassination"
88
LANGUAGES CXX)
99
set(CMAKE_CXX_STANDARD 20)

include/NavKit/NavKitConfig.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#define NavKit_VERSION_MAJOR "2"
2-
#define NavKit_VERSION_MINOR "6"
3-
#define NavKit_VERSION_PATCH "0"
2+
#define NavKit_VERSION_MINOR "7"
3+
#define NavKit_VERSION_PATCH "1"

include/NavKit/Resource.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
#define IDM_FILE_OPEN_AIRG 1003
1010
#define IDM_FILE_SAVE_SCENE 1010
1111
#define IDM_FILE_SAVE_OBJ 1011
12-
#define IDM_FILE_SAVE_NAVP 1012
13-
#define IDM_FILE_SAVE_AIRG 1013
12+
#define IDM_FILE_SAVE_BLEND 1012
13+
#define IDM_FILE_SAVE_NAVP 1013
14+
#define IDM_FILE_SAVE_AIRG 1014
1415
#define IDM_FILE_EXIT 1020
1516
#define IDM_EDIT_NAVP_STAIRS 1100
1617
#define IDM_EDIT_AIRG_CONNECT_WAYPOINT 1101
@@ -143,5 +144,6 @@
143144
#define IDC_CHECK_PRIM_LOD_8 30410
144145
#define IDC_RADIO_BUILD_TYPE_COPY 30411
145146
#define IDC_RADIO_BUILD_TYPE_INSTANCE 30412
146-
#define IDC_CHECK_SKIP_RPKG_EXTRACT 30413
147-
#define IDC_CHECK_SHOW_BLENDER_DEBUG_LOGS 30414
147+
#define IDC_CHECK_FILTER_TO_INCLUDE_BOX 30413
148+
#define IDC_CHECK_SKIP_RPKG_EXTRACT 30414
149+
#define IDC_CHECK_SHOW_BLENDER_DEBUG_LOGS 30415

include/NavKit/module/Obj.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class Obj {
4444
bool blenderObjGenerationDone;
4545
bool blendFileOnlyBuild;
4646
bool blendFileAndObjBuild;
47+
bool filterToIncludeBox;
4748
bool glacier2ObjDebugLogsEnabled;
4849
bool errorBuilding;
4950
bool skipExtractingAlocsOrPrims;
@@ -55,6 +56,7 @@ class Obj {
5556
MeshType meshTypeForBuild;
5657
SceneMeshBuildType sceneMeshBuildType;
5758
bool primLods[8];
59+
bool blendFileBuilt;
5860
static HWND hObjDialog;
5961

6062
static char *openSetBlenderFileDialog(const char *lastBlenderFile);
@@ -65,10 +67,12 @@ class Obj {
6567

6668
void handleBuildBlendAndObjFromSceneClicked();
6769

68-
static void copyObjFile(const std::string &from, const std::string &to);
70+
static void copyFile(const std::string &from, const std::string &to, const std::string& filetype);
6971

7072
void saveObjMesh(char *objToCopy, char *newFileName);
7173

74+
void saveBlendMesh(std::string objToCopy, std::string newFileName);
75+
7276
void buildObjFromNavp(bool alsoLoadIntoUi);
7377

7478
void buildObjFromScene();
@@ -77,9 +81,11 @@ class Obj {
7781

7882
static void renderObj();
7983

80-
static char *openLoadObjFileDialog(const char *lastObjFolder);
84+
static char *openLoadObjFileDialog();
85+
86+
static char *openSaveObjFileDialog();
8187

82-
static char *openSaveObjFileDialog(char *lastObjFolder);
88+
static char* openSaveBlendFileDialog();
8389

8490
void setLastLoadFileName(const char *fileName);
8591

@@ -88,12 +94,14 @@ class Obj {
8894
void handleOpenObjClicked();
8995

9096
void handleSaveObjClicked();
97+
void handleSaveBlendClicked();
9198

9299
[[nodiscard]] bool canLoad() const;
93100

94101
static bool canBuildObjFromNavp();
95102

96103
[[nodiscard]] bool canBuildObjFromScene() const;
104+
bool canSaveBlend() const;
97105

98106
[[nodiscard]] bool canBuildBlendFromScene() const;
99107

src/NavKit.rc

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ BEGIN
1515
MENUITEM SEPARATOR
1616
MENUITEM "Save &Scene", IDM_FILE_SAVE_SCENE
1717
MENUITEM "Save &Obj", IDM_FILE_SAVE_OBJ
18+
MENUITEM "Save &Blend", IDM_FILE_SAVE_BLEND
1819
MENUITEM "Save &Navp", IDM_FILE_SAVE_NAVP
1920
MENUITEM "Save &Airg", IDM_FILE_SAVE_AIRG
2021
MENUITEM SEPARATOR
@@ -64,20 +65,19 @@ BEGIN
6465
BEGIN
6566
MENUITEM "Extract &Scene from game", IDM_EXTRACT_SCENE
6667
MENUITEM "Extract Scene from game and build &Obj", IDM_EXTRACT_SCENE_AND_BUILD_OBJ
67-
MENUITEM "Extract Scene from game and build &all", IDM_EXTRACT_SCENE_AND_BUILD_ALL
68+
MENUITEM "Extract Scene, build &navp and airg", IDM_EXTRACT_SCENE_AND_BUILD_ALL
6869
END
6970

7071
POPUP "&Build"
7172
BEGIN
7273
MENUITEM "Build Obj from &Scene", IDM_BUILD_OBJ_FROM_SCENE
7374
MENUITEM "Build Obj from &Navp", IDM_BUILD_OBJ_FROM_NAVP
75+
MENUITEM "Build Obj and Blend from &Scene" IDM_BUILD_BLEND_AND_OBJ_FROM_SCENE
76+
MENUITEM "Build Blend from &Scene" IDM_BUILD_BLEND_FROM_SCENE
7477
MENUITEM SEPARATOR
7578
MENUITEM "Build &Navp from Obj and Scene", IDM_BUILD_NAVP
7679
MENUITEM SEPARATOR
7780
MENUITEM "Build &Airg from Navp", IDM_BUILD_AIRG
78-
MENUITEM SEPARATOR
79-
MENUITEM "Build Blend from &Scene" IDM_BUILD_BLEND_FROM_SCENE
80-
MENUITEM "Build Blend and Obj from &Scene" IDM_BUILD_BLEND_AND_OBJ_FROM_SCENE
8181
END
8282

8383
POPUP "&Help"
@@ -252,7 +252,7 @@ BEGIN
252252
PUSHBUTTON "Reset Defaults",IDC_BUTTON_RESET_DEFAULTS,188,490,65,14
253253
END
254254

255-
IDD_OBJ_SETTINGS DIALOGEX 0, 0, 260, 285
255+
IDD_OBJ_SETTINGS DIALOGEX 0, 0, 260, 325
256256
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
257257
CAPTION "Scene Mesh Settings"
258258
FONT 8, "MS Shell Dlg", 400, 0, 0x1
@@ -278,8 +278,11 @@ BEGIN
278278
GROUPBOX "Skip Aloc / Prim Extraction from RPKG files",IDC_STATIC,7,180,246,35
279279
AUTOCHECKBOX "Skip Extraction",IDC_CHECK_SKIP_RPKG_EXTRACT,14,195,80,10
280280

281-
GROUPBOX "Show Blender Debug logs",IDC_STATIC,7,225,246,35
282-
AUTOCHECKBOX "Show Debug Logs",IDC_CHECK_SHOW_BLENDER_DEBUG_LOGS,14,240,80,10
281+
GROUPBOX "Filter meshes to include box",IDC_STATIC,7,225,246,35
282+
AUTOCHECKBOX "Filter meshes",IDC_CHECK_FILTER_TO_INCLUDE_BOX,14,240,80,10
283+
284+
GROUPBOX "Show Blender Debug logs",IDC_STATIC,7,265,246,35
285+
AUTOCHECKBOX "Show Debug Logs",IDC_CHECK_SHOW_BLENDER_DEBUG_LOGS,14,280,80,10
283286

284-
PUSHBUTTON "Reset Defaults",IDC_BUTTON_RESET_DEFAULTS,188,265,65,14
287+
PUSHBUTTON "Reset Defaults",IDC_BUTTON_RESET_DEFAULTS,188,305,65,14
285288
END

src/adapter/RecastAdapter.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,11 @@ void RecastAdapter::setSceneBBoxToMesh() const {
384384

385385
void RecastAdapter::handleMeshChanged() const {
386386
sample->handleMeshChanged(inputGeom);
387-
if (const Scene &scene = Scene::getInstance();
388-
!scene.sceneLoaded ||
389-
scene.includeBox.id == ZPathfinding::PfBoxes::NO_INCLUDE_BOX_FOUND) {
390-
setSceneBBoxToMesh();
391-
}
387+
// if (const Scene &scene = Scene::getInstance();
388+
// !scene.sceneLoaded ||
389+
// scene.includeBox.id == ZPathfinding::PfBoxes::NO_INCLUDE_BOX_FOUND) {
390+
// setSceneBBoxToMesh();
391+
// }
392392
}
393393

394394
void RecastAdapter::cleanup() const {

src/module/Menu.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ void Menu::updateMenuState() {
9696
setMenuItemEnabled(IDM_FILE_SAVE_NAVP, isNavpLoaded);
9797
setMenuItemEnabled(IDM_FILE_SAVE_AIRG, airg.canSave());
9898
setMenuItemEnabled(IDM_FILE_SAVE_OBJ, isObjLoaded);
99+
setMenuItemEnabled(IDM_FILE_SAVE_BLEND, obj.canSaveBlend());
99100

100101
setMenuItemEnabled(IDM_EDIT_NAVP_STAIRS, isAreaSelected);
101102
setMenuItemEnabled(IDM_EDIT_AIRG_CONNECT_WAYPOINT, airg.canEnterConnectWaypointMode());
@@ -162,6 +163,10 @@ int Menu::handleMenuClicked(const SDL_SysWMmsg *wmMsg) {
162163
Obj::getInstance().handleSaveObjClicked();
163164
Logger::log(NK_DEBUG, "File -> Save Obj clicked");
164165
break;
166+
case IDM_FILE_SAVE_BLEND:
167+
Obj::getInstance().handleSaveBlendClicked();
168+
Logger::log(NK_DEBUG, "File -> Save Blend clicked");
169+
break;
165170
case IDM_FILE_SAVE_NAVP:
166171
Navp::getInstance().handleSaveNavpClicked();
167172
Logger::log(NK_DEBUG, "File -> Save Navp clicked");

0 commit comments

Comments
 (0)