wow-wdt 0.7.0

Parser, validator, and converter for World of Warcraft WDT (World Data Table) files
Documentation
# wow-wdt Examples

This directory contains examples demonstrating wow-wdt functionality.

## Running Examples

```bash
cargo run --example <example_name> [arguments]
```

## Available Examples

### Basic Operations

- **`parse_wdt.rs`** - Parse and display WDT file information

  ```bash
  cargo run --example parse_wdt path/to/world/maps/azeroth/azeroth.wdt
  ```

- **`create_wdt.rs`** - Create a new WDT file programmatically

  ```bash
  cargo run --example create_wdt
  ```

## WDT File Structure

WDT (World Data Table) files are map definition files that:

- Define which ADT tiles exist for a map
- Store global map properties and flags
- Reference world map objects (WMOs)
- Link to texture and model files

## Example Usage

```rust
use wow_wdt::{Wdt, WdtFlags};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Load a WDT file
    let wdt = Wdt::load("path/to/azeroth.wdt")?;

    // Display map information
    println!("Map Flags: {:?}", wdt.flags);

    // Check which tiles exist
    for y in 0..64 {
        for x in 0..64 {
            if wdt.tile_exists(x, y) {
                println!("Tile ({}, {}) exists", x, y);
            }
        }
    }

    // List map objects
    for obj in &wdt.objects {
        println!("WMO: {} at position {:?}", obj.filename, obj.position);
    }

    Ok(())
}
```

## Creating a WDT

```rust
use wow_wdt::{Wdt, WdtBuilder, WdtFlags};

let mut builder = WdtBuilder::new();

// Set map properties
builder.set_flags(WdtFlags::GLOBAL_WMO);

// Define which tiles exist
builder.set_tile(32, 48, true); // Tile at (32, 48) exists
builder.set_area_id(32, 48, 1519); // Stormwind City

// Add a world map object
builder.add_wmo(
    "world/wmo/azeroth/buildings/stormwind/stormwind.wmo",
    Vector3::new(100.0, 200.0, 50.0),
    Vector3::new(0.0, 0.0, 0.0),
);

let wdt = builder.build()?;
wdt.save("custom_map.wdt")?;
```

## Map Flags

Common WDT flags:

- `GLOBAL_WMO` - Map uses a global WMO
- `VERTEX_SHADING` - Use vertex shading
- `BIG_ALPHA` - Big alpha maps
- `TERRAIN_SHADERS` - Use terrain shaders

## CLI Integration

The wow-wdt functionality is also available through the warcraft-rs CLI:

```bash
warcraft-rs wdt info azeroth.wdt
warcraft-rs wdt tiles azeroth.wdt
warcraft-rs wdt objects azeroth.wdt
warcraft-rs wdt tree azeroth.wdt
```

## Test Data

WDT files are located in map directories:

```
world/maps/[mapname]/[mapname].wdt
```

Common maps:

- `azeroth` - Eastern Kingdoms
- `kalimdor` - Kalimdor
- `northrend` - Northrend
- `pandaria` - Pandaria