Skip to content

Latest commit

 

History

History
21 lines (18 loc) · 2.46 KB

File metadata and controls

21 lines (18 loc) · 2.46 KB

Learned User Preferences

  • 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 CMake build/ tree.
  • Builds multi-year Max targets (2024+) from Visual Studio 2026 as the host IDE/toolchain.

Learned Workspace Facts

  • Repository is an X-Plane OBJ exporter/importer plugin for Autodesk 3ds Max (3DsMax-XplnObj under 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/ParamBlock2 UI (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 at https://developer.x-plane.com/article/obj8-file-format-specification/.
  • SDK majors from maxversion.h: 2024→26, 2025→27, 2026→28; do not redefine MAX_VERSION_MAJOR from the product year. Max 2024 compile blockers also include missing NonLocalizedClassName(), sealed GetClassName/GetObjectName/SubAnimName overrides, and wrong CMake lib/x64 link path.
  • Max 2025+ C2280: WStr/MSTR rvalue cannot convert via deleted operator const wchar_t*() && — bind a named lvalue; use setNodeNameFromUtf8 / mbFromMaxString; GetDir returns MSTR by value on Max 2025+.
  • Max 2025+ menus: classic IMenuManager is stubbed; use ICuiMenuManager (MainMenu.cpp, MAX_VERSION_MAJOR >= 27).
  • Debug LNK2038: do not link Release-only XplnObj.lib into a Debug plugin — build XplnObj in-tree via add_subdirectory so CRT/ITERATOR_DEBUG_LEVEL match (/MD vs /MDd).