Expand description

General-purpose machinery for displaying Reflect types using egui

Examples

Basic usage

use bevy_reflect::{Reflect, TypeRegistry};
use bevy_inspector_egui::reflect_inspector::{ui_for_value, InspectorUi, Context};

#[derive(Reflect)]
struct Data {
    value: f32,
}

fn ui(data: &mut Data, ui: &mut egui::Ui, type_registry: &TypeRegistry) {
    let mut cx = Context::default(); // empty context, with no access to the bevy world
    let mut env = InspectorUi::new_no_short_circuit(type_registry, &mut cx); // no short circuiting, couldn't display `Handle<StandardMaterial>`

    let _changed = env.ui_for_reflect(data, ui);

    // alternatively, if you are using an empty `Context`:
    let _changed = ui_for_value(data, ui, type_registry);
}

Bevy specific usage

use bevy_reflect::{Reflect, TypeRegistry};
use bevy_inspector_egui::reflect_inspector::{InspectorUi, Context};

use bevy_ecs::prelude::*;
use bevy_asset::Handle;
use bevy_pbr::StandardMaterial;

#[derive(Reflect)]
struct Data {
    material: Handle<StandardMaterial>,
}

fn ui(mut data: Mut<Data>, ui: &mut egui::Ui, world: &mut World, type_registry: &TypeRegistry) {
    let mut cx = Context {
        world: Some(world.into()),
    };
    let mut env = InspectorUi::for_bevy(type_registry, &mut cx);

    // alternatively
    // use crate::bevy_inspector::short_circuit;
    // let mut env = InspectorUi::new(type_registry, &mut cx, Some(short_circuit::short_circuit), Some(short_circuit::short_circuit_readonly));

    let changed = env.ui_for_reflect(data.bypass_change_detection(), ui);
    if changed {
        data.set_changed();
    }
}

Structs

Functions

Display the value without any Context or short circuiting behaviour. This means that for example bevy’s Handle<StandardMaterial> values cannot be displayed, as they would need to have access to the World.
Display the readonly value without any Context or short circuiting behaviour. This means that for example bevy’s Handle<StandardMaterial> values cannot be displayed, as they would need to have access to the World.

Type Definitions

Function which will be executed for every field recursively, which can be used to skip regular traversal.
Function which will be executed for every field recursively, which can be used to skip regular traversal, _many variant
Function which will be executed for every field recursively, which can be used to skip regular traversal, _readonly variant