Crate bevy_easy_portals

Source
Expand description

§bevy_easy_portals

Easy-to-use portals for Bevy

screenshot showing a cube being reflected in a mirror using portals

§Getting Started

First, add PortalPlugin to your app, then use the Portal component, et voila!

See the examples for more references.

Example usage
use bevy::prelude::*;
use bevy_easy_portals::{Portal, PortalPlugins}

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, PortalPlugins))
        .add_systems(Startup, setup)
        .run();
}

fn setup(
    mut commands: Commands,
    mut materials: ResMut<Assets<StandardMaterial>>,
    mut meshes: ResMut<Assets<Mesh>>,
) {
    let primary_camera = commands
        .spawn((Camera3d::default(), Transform::from_xyz(0.0, 0.0, 10.0)))
        .id();

    // Spawn something for the portal to look at
    commands.spawn((
        Mesh3d(meshes.add(Cuboid::default())),
        MeshMaterial3d(materials.add(Color::WHITE)),
        Transform::from_xyz(10.0, 0.0, 0.0),
    ));

    // Where the portal's target camera should be
    let target = commands.spawn(Transform::from_xyz(10.0, 0.0, 10.0)).id();
    // Where the portal should be located
    let portal_transform = Transform::default();
    // Spawn the portal, omit a material since one will be added automatically
    commands.spawn((
        Mesh3d(meshes.add(Rectangle::default())),
        portal_transform,
        Portal::new(primary_camera, target),
    ));
}

§Compatibility

bevy_easy_portalsbevy
0.30.15
0.1..0.20.14

§Features

FeatureDescription
pickingSupport picking through portals with using your favourite backend
gizmosUse gizmos for the portal’s aabb and camera transform

§Contributing

Feel free to open a PR!

If possible, please try to keep it minimal and scoped.

§Alternatives

Modules§

camera
gizmos
Gizmos for Portal debugging.
material
picking
Portal picking functionality for bevy_picking.

Structs§

Portal
Component used to create a portal.
PortalPlugins
A group of plugins that provides the required systems to make a Portal work.