bevy_vr_controller 0.1.1

VR character controller for Bevy
Documentation
use bevy::{asset::embedded_asset, prelude::*};
use bevy_tnua::prelude::TnuaControllerPlugin;
use bevy_tnua_avian3d::TnuaAvian3dPlugin;
use bevy_vrm::VrmPlugins;

pub mod animation;
mod eye_offset;
mod first_person;
mod head;
pub mod input;
mod look;
pub mod movement;
pub mod player;
mod velocity;

pub struct VrControllerPlugin;

impl Plugin for VrControllerPlugin {
    fn build(&self, app: &mut App) {
        app.add_plugins((
            TnuaAvian3dPlugin::default(),
            TnuaControllerPlugin::default(),
            VrmPlugins,
        ))
        .init_resource::<input::InputMap>()
        .add_event::<look::CameraLookEvent>()
        .add_systems(
            Update,
            (
                animation::init_animations,
                animation::load::load_animation_nodes,
                animation::weights::play_avatar_animations,
                eye_offset::calc_eye_offset,
                first_person::setup_first_person,
                head::set_avatar_head,
                input::read_keyboard_input,
                look::grab_mouse,
                velocity::calc_average_velocity,
                (
                    (look::read_mouse_input, look::apply_camera_look).chain(),
                    (
                        (movement::void_teleport, movement::move_player).chain(),
                        head::rotate_avatar_head,
                    ),
                )
                    .chain(),
            ),
        );

        embedded_asset!(app, "animation/default-animations.glb");
    }
}