Skip to content

Commit 2e5f99a

Browse files
committed
[1.3.50] 2025-09-22
- Updated PugiXML library from version 1.7 to 1.15 with compact mode and XPath disabled for improved performance - Fixed a bug in `Context::loadOBJ()` where materials that have a texture mask (`map_d`) and a diffuse color `Kd` were not being loaded correctly. The texture was being applied but it was using the default color. - Fixed a bug where copied primitives with texture color overridden were not copying the constant RGB color. - Enhanced OBJ/MTL loading system with improved default color handling in `loadMTL()` function - Added `isDirectoryPath()` utility function to distinguish between directory and file paths using multiple heuristics - Fixed a bug that could cause plant parameter contamination between different plant types in the scene. - Added Bougainvillea flower 3D model assets (OBJ/MTL files and Blender source) - Updated strawberry and tomato fruit models with improved geometry - Enhanced documentation with collision detection schematics and perception cone diagrams - Fixes to headless rendering mode, including ability to save images without opening a window - Significant changes to front/back buffer detection hopefully to fix issues with `Visualizer::printWindow()` producing black images. Automated tests added for this in headless and windowed mode. - Improved shader management and geometry handling - Enhanced documentation with updated API references - Updates to RadiationCamera file path discovery to check whether the file is a directory or file, and handle accordingly
1 parent e1d921d commit 2e5f99a

39 files changed

Lines changed: 8176 additions & 4513 deletions

core/include/Context.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2262,7 +2262,7 @@ namespace helios {
22622262
OBJmaterial(const RGBcolor &a_color, std::string a_texture, uint a_materialID) : color{a_color}, texture{std::move(a_texture)}, materialID{a_materialID} {};
22632263
};
22642264

2265-
std::map<std::string, OBJmaterial> loadMTL(const std::string &filebase, const std::string &material_file);
2265+
std::map<std::string, OBJmaterial> loadMTL(const std::string &filebase, const std::string &material_file, const RGBcolor &default_color);
22662266

22672267
void loadPData(pugi::xml_node p, uint UUID);
22682268

core/include/global.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,14 @@ namespace helios {
11691169
*/
11701170
[[nodiscard]] bool validateOutputPath(std::string &output_directory, const std::vector<std::string> &allowable_file_extensions = {});
11711171

1172+
//! Check whether a path string represents a directory path (as opposed to a file path)
1173+
/**
1174+
* \param[in] path String containing the path to check
1175+
* \return True if the path represents a directory, false if it represents a file
1176+
* \note This function uses multiple heuristics: trailing slash, existing filesystem paths, and common file extensions
1177+
*/
1178+
[[nodiscard]] bool isDirectoryPath(const std::string &path);
1179+
11721180
//--------------------- ASSET PATH RESOLUTION -----------------------------------//
11731181

11741182
//! Resolve asset file path using cpplocate, allowing executables to run from any directory

core/lib/pugixml/pugiconfig.hpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
/**
2-
* pugixml parser - version 1.7
2+
* pugixml parser - version 1.15
33
* --------------------------------------------------------
4-
* Copyright (C) 2006-2015, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
5-
* Report bugs and download new versions at http://pugixml.org/
4+
* Report bugs and download new versions at https://pugixml.org/
65
*
7-
* This library is distributed under the MIT License. See notice at the end
8-
* of this file.
6+
* SPDX-FileCopyrightText: Copyright (C) 2006-2025, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
7+
* SPDX-License-Identifier: MIT
98
*
10-
* This work is based on the pugxml parser, which is:
11-
* Copyright (C) 2003, by Kristen Wegner (kristen@tima.net)
9+
* See LICENSE.md or notice at the end of this file.
1210
*/
1311

1412
#ifndef HEADER_PUGICONFIG_HPP
@@ -18,10 +16,10 @@
1816
// #define PUGIXML_WCHAR_MODE
1917

2018
// Uncomment this to enable compact mode
21-
// #define PUGIXML_COMPACT
19+
#define PUGIXML_COMPACT
2220

2321
// Uncomment this to disable XPath
24-
// #define PUGIXML_NO_XPATH
22+
#define PUGIXML_NO_XPATH
2523

2624
// Uncomment this to disable STL
2725
// #define PUGIXML_NO_STL
@@ -40,16 +38,22 @@
4038
// #define PUGIXML_MEMORY_OUTPUT_STACK 10240
4139
// #define PUGIXML_MEMORY_XPATH_PAGE_SIZE 4096
4240

41+
// Tune this constant to adjust max nesting for XPath queries
42+
// #define PUGIXML_XPATH_DEPTH_LIMIT 1024
43+
4344
// Uncomment this to switch to header-only version
4445
// #define PUGIXML_HEADER_ONLY
4546

46-
// Uncomment this to enable long long support
47+
// Uncomment this to enable long long support (usually enabled automatically)
4748
// #define PUGIXML_HAS_LONG_LONG
4849

50+
// Uncomment this to enable support for std::string_view (usually enabled automatically)
51+
// #define PUGIXML_HAS_STRING_VIEW
52+
4953
#endif
5054

5155
/**
52-
* Copyright (c) 2006-2015 Arseny Kapoulkine
56+
* Copyright (c) 2006-2025 Arseny Kapoulkine
5357
*
5458
* Permission is hereby granted, free of charge, to any person
5559
* obtaining a copy of this software and associated documentation
@@ -62,7 +66,7 @@
6266
*
6367
* The above copyright notice and this permission notice shall be
6468
* included in all copies or substantial portions of the Software.
65-
*
69+
*
6670
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
6771
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
6872
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

0 commit comments

Comments
 (0)