- Ask for guidance when unsure rather than guessing during modernization work.
- Primary goal is modernizing the abandoned X-Plane OBJ 3ds Max exporter so it works again with modern 3ds Max and X-Plane 12.
- First shippable Max target is Max 2024 only; prefer Max 2024 SDK guidance for compatibility and modernization.
- Prefer an export-first milestone with the existing OBJ8 feature set; defer import success and X-Plane 12 format-feature work.
- Treat official Laminar developer.x-plane.com SDK and file-format docs as authoritative context for X-Plane 12 work.
- Plugin outputs must land in
bin/<MaxYear>/Debug|Release(e.g.bin/2024/Release/) — never under the CMakebuild/tree. - Builds multi-year Max targets (2024+) from Visual Studio 2026 as the host IDE/toolchain.
- Repository is an X-Plane OBJ exporter/importer plugin for Autodesk 3ds Max (
3DsMax-XplnObjunder Coalition-of-Freeware-Developers). - Upstream plugin work stopped around 2017 and does not work with current 3ds Max versions; in-tree feature set is XP10/11-era OBJ8 without XP12-specific directives yet.
- Modernization is already in progress in CMake Max targeting and exporter-related sources (
CMakeLists.txt,cmake/Sts3dmaxTarget.cmake,ObjExporter,MainObjParamsWrapper,readme.md). - Locked Max 2024 refactor defaults: keep Win32/
ParamBlock2UI (no Qt), keep combined.dlu, ship export before import/XP12 format work. - Authoritative XP12 references include
https://developer.x-plane.com/sdk/,https://developer.x-plane.com/docs/specs/, and the OBJ8 spec athttps://developer.x-plane.com/article/obj8-file-format-specification/. - SDK majors from
maxversion.h: 2024→26, 2025→27, 2026→28; do not redefineMAX_VERSION_MAJORfrom the product year. Max 2024 compile blockers also include missingNonLocalizedClassName(), sealedGetClassName/GetObjectName/SubAnimNameoverrides, and wrong CMakelib/x64link path. - Max 2025+ C2280:
WStr/MSTRrvalue cannot convert via deletedoperator const wchar_t*() &&— bind a named lvalue; usesetNodeNameFromUtf8/mbFromMaxString;GetDirreturnsMSTRby value on Max 2025+. - Max 2025+ menus: classic
IMenuManageris stubbed; useICuiMenuManager(MainMenu.cpp,MAX_VERSION_MAJOR >= 27). - Debug LNK2038: do not link Release-only
XplnObj.libinto a Debug plugin — buildXplnObjin-tree viaadd_subdirectoryso CRT/ITERATOR_DEBUG_LEVELmatch (/MDvs/MDd).