From 35725eaa8baeb26a5717e0fbfe6d69f0996bfac6 Mon Sep 17 00:00:00 2001 From: Malek Date: Wed, 29 May 2024 16:55:40 -0700 Subject: [PATCH] Refactor hands (#110) * cargo fmt and removed the unessecary examples. * added left and right hand components for each bone as well as the hand tracker. --- .../src/openxr/features/handtracking.rs | 17 +++++++++++++++-- crates/bevy_xr/src/hands.rs | 6 ++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/crates/bevy_openxr/src/openxr/features/handtracking.rs b/crates/bevy_openxr/src/openxr/features/handtracking.rs index e0dde02..d044313 100644 --- a/crates/bevy_openxr/src/openxr/features/handtracking.rs +++ b/crates/bevy_openxr/src/openxr/features/handtracking.rs @@ -1,4 +1,5 @@ use bevy::prelude::*; +use bevy_xr::hands::{LeftHand, RightHand}; use bevy_xr::{ hands::{HandBone, HandBoneRadius}, session::{session_running, status_changed_to, XrStatus}, @@ -74,10 +75,20 @@ fn spawn_default_hands( let mut right_bones = [Entity::PLACEHOLDER; 26]; for bone in HandBone::get_all_bones() { let bone_left = cmds - .spawn((SpatialBundle::default(), bone, HandBoneRadius(0.0))) + .spawn(( + SpatialBundle::default(), + bone, + HandBoneRadius(0.0), + LeftHand, + )) .id(); let bone_right = cmds - .spawn((SpatialBundle::default(), bone, HandBoneRadius(0.0))) + .spawn(( + SpatialBundle::default(), + bone, + HandBoneRadius(0.0), + RightHand, + )) .id(); cmds.entity(root).push_children(&[bone_left]); cmds.entity(root).push_children(&[bone_right]); @@ -88,11 +99,13 @@ fn spawn_default_hands( DefaultHandTracker, OxrHandTracker(tracker_left), OxrHandBoneEntities(left_bones), + LeftHand, )); cmds.spawn(( DefaultHandTracker, OxrHandTracker(tracker_right), OxrHandBoneEntities(right_bones), + RightHand, )); } diff --git a/crates/bevy_xr/src/hands.rs b/crates/bevy_xr/src/hands.rs index ebb9f3b..37571b4 100644 --- a/crates/bevy_xr/src/hands.rs +++ b/crates/bevy_xr/src/hands.rs @@ -4,6 +4,12 @@ use bevy::{ prelude::{Deref, DerefMut}, }; +#[derive(Clone, Copy, Component, Debug)] +pub struct LeftHand; + +#[derive(Clone, Copy, Component, Debug)] +pub struct RightHand; + #[repr(transparent)] #[derive(Clone, Copy, Component, Debug, DerefMut, Deref)] pub struct HandBoneRadius(pub f32);