Skip to content

Conversation

@danielsreichenbach
Copy link
Member

@danielsreichenbach danielsreichenbach commented Sep 23, 2025

…k support

WMO Parser Architecture:

  • Migrated from manual binary parsing to declarative BinRead derive macros
  • Implemented two-phase parsing: chunk discovery followed by typed parsing
  • Added modular parser architecture with separate root and group parsers
  • Enhanced error handling with detailed parsing context

New WMO Chunks:

  • GFID (Group File ID) - File references for group data
  • MORI (Portal references) - Portal connectivity information
  • MORB (Bounding boxes) - Spatial boundaries for groups
  • MOTA (Portal attachment) - Portal-to-group associations
  • MOBS (Shadow batches) - Shadow rendering with signed index support

Tree Command Enhancements:

  • Increased chunk coverage from 48.8% to 97.6% (40/41 chunks displayed)
  • Added --detailed flag for complete field-level data visibility
  • Enhanced material display with shader, blend mode, and texture data
  • Added verbose metadata for all chunk types

Bug Fixes:

  • Fixed MOBS structure to use signed integers for proper index interpretation
  • Added alternative chunk ID patterns for MOVB (VBOM, BVOM) and MFOG (GFOM, GOFM)
  • Corrected shadow batch negative index values (0xFFF8 = -8)

Validation:

  • Tested against 149 WMO files from Vanilla, WotLK, and Cataclysm/MoP
  • Achieved 100% parsing success rate with zero errors
  • Properly handles float values stored in texture index fields

Documentation:

  • Updated CHANGELOG for v0.5.0 release
  • Fixed markdown linting issues and bare URLs
  • Removed marketing language per project guidelines
  • Updated version references to v0.4.0 across documentation

Pull Request

Summary

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing
    functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)
  • Performance improvement
  • Test improvements
  • Build system/dependency changes
  • Security fix

Changes Made

  • rewrote the wow-mwo parser using binrw and added missing chunks
  • added support for sub-chunks.

Testing

Test Cases Added/Modified

  • Unit tests
  • Integration tests
  • Compliance tests (StormLib compatibility)
  • Performance benchmarks
  • Manual testing

Tested On

  • Linux
  • macOS
  • Windows
  • Cross-compilation targets

WoW Versions Tested

  • 1.12.1 (Vanilla)
  • 2.4.3 (TBC)
  • 3.3.5a (WotLK)
  • 4.3.4 (Cataclysm)
  • 5.4.8 (MoP)
  • Other: _______________

Quality Assurance

Code Quality

  • Code follows project style guidelines
  • Self-review of code completed
  • Code is properly documented
  • No obvious performance regressions
  • Error handling is appropriate

Required Checks

  • cargo fmt --all - Code is formatted
  • cargo clippy --all-targets --all-features - No clippy warnings
  • cargo test --all-features - All tests pass
  • cargo test --no-default-features - Tests pass without features
  • cargo deny check - No security/license issues
  • Documentation builds successfully

Compatibility

  • No breaking changes to public API (or properly documented)
  • Backward compatibility maintained where possible
  • StormLib compatibility preserved (if applicable)
  • Cross-platform compatibility verified

Documentation

  • Updated relevant documentation in docs/
  • Updated CHANGELOG.md
  • Updated README.md (if applicable)
  • Added/updated code examples
  • Added/updated CLI help text
  • API documentation updated (rustdoc)

Benchmarks

Performance Impact

  • No performance impact
  • Performance improvement (include metrics)
  • Performance regression (justified and documented)

Benchmark Results

# Before:
test bench_parse_archive ... bench: 1,234 ns/iter (+/- 56)

# After:
test bench_parse_archive ... bench: 987 ns/iter (+/- 43)

Breaking Changes

API Changes

Migration Guide

Security Considerations

  • No security implications
  • Security improvement
  • Potential security impact (reviewed and justified)

Additional Context

Dependencies

Known Limitations

Screenshots/Examples


Reviewer Notes

Areas of Focus

Questions for Reviewers


By submitting this PR, I confirm that:

  • I have read and agree to the Contributing Guidelines
  • This PR is ready for review (not a draft)
  • I am willing to address feedback and make necessary changes
  • I understand this may take time to review and merge

@danielsreichenbach danielsreichenbach self-assigned this Sep 23, 2025
@danielsreichenbach danielsreichenbach added the enhancement New feature or request label Sep 23, 2025
…k support

WMO Parser Architecture:
- Migrated from manual binary parsing to declarative BinRead derive macros
- Implemented two-phase parsing: chunk discovery followed by typed parsing
- Added modular parser architecture with separate root and group parsers
- Enhanced error handling with detailed parsing context

New WMO Chunks:
- GFID (Group File ID) - File references for group data
- MORI (Portal references) - Portal connectivity information
- MORB (Bounding boxes) - Spatial boundaries for groups
- MOTA (Portal attachment) - Portal-to-group associations
- MOBS (Shadow batches) - Shadow rendering with signed index support

Tree Command Enhancements:
- Increased chunk coverage from 48.8% to 97.6% (40/41 chunks displayed)
- Added --detailed flag for complete field-level data visibility
- Enhanced material display with shader, blend mode, and texture data
- Added verbose metadata for all chunk types

Bug Fixes:
- Fixed MOBS structure to use signed integers for proper index interpretation
- Added alternative chunk ID patterns for MOVB (VBOM, BVOM) and MFOG (GFOM, GOFM)
- Corrected shadow batch negative index values (0xFFF8 = -8)

Validation:
- Tested against 149 WMO files from Vanilla, WotLK, and Cataclysm/MoP
- Achieved 100% parsing success rate with zero errors
- Properly handles float values stored in texture index fields

Documentation:
- Updated CHANGELOG for v0.5.0 release
- Fixed markdown linting issues and bare URLs
- Removed marketing language per project guidelines
- Updated version references to v0.4.0 across documentation
@danielsreichenbach danielsreichenbach merged commit ad1b8c2 into main Sep 24, 2025
15 of 19 checks passed
@danielsreichenbach danielsreichenbach deleted the 001-refactor-the-wmo branch September 24, 2025 02:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Development

Successfully merging this pull request may close these issues.

2 participants