bevy_map_derive

Crates.iobevy_map_derive
lib.rsbevy_map_derive
version0.3.1
created_at2025-12-21 07:20:05.017281+00
updated_at2026-01-20 11:16:40.238801+00
descriptionDerive macros for bevy_map_editor entity spawning
homepage
repositoryhttps://github.com/jbuehler23/bevy_map_editor
max_upload_size
id1997634
size17,596
Joe Buehler (jbuehler23)

documentation

README

bevy_map_derive

Proc macros for the bevy_map_editor ecosystem.

Part of bevy_map_editor.

#[derive(MapEntity)]

Automatically implements entity spawning from map data.

use bevy::prelude::*;
use bevy_map::prelude::*;

#[derive(Component, MapEntity)]
#[map_entity(type_name = "Enemy")]
pub struct Enemy {
    #[map_prop]
    pub name: String,

    #[map_prop(default = 100)]
    pub health: i32,

    #[map_prop(name = "patrol_path")]
    pub path: Option<String>,

    #[map_sprite("sprite")]
    pub sprite_handle: Option<Handle<Image>>,
}

Attributes

Container: #[map_entity(...)]

Attribute Required Description
type_name = "Name" Yes Entity type name as used in editor

Field: #[map_prop(...)]

Attribute Description
name = "prop_name" Override property name (default: field name)
default = value Default value if property missing

Field: #[map_sprite(...)]

Inject sprite handle from map data.

Usage Description
#[map_sprite] Use field name as property name
#[map_sprite("name")] Use specified property name

Field must be Option<Handle<Image>>.

Complete Example

use bevy::prelude::*;
use bevy_map::prelude::*;

#[derive(Component, MapEntity)]
#[map_entity(type_name = "Player")]
pub struct Player {
    #[map_prop]
    pub name: String,

    #[map_prop(default = 5.0)]
    pub speed: f32,

    #[map_sprite("player_sprite")]
    pub sprite: Option<Handle<Image>>,
}

// Register in your app builder
App::new()
    .add_plugins(MapRuntimePlugin)
    .register_map_entity::<Player>()
    // ... other setup

License

MIT OR Apache-2.0

Commit count: 75

cargo fmt