diff --git a/voxygen/anim/src/biped_large/mod.rs b/voxygen/anim/src/biped_large/mod.rs index 9ced7b2b1c..e712e3c272 100644 --- a/voxygen/anim/src/biped_large/mod.rs +++ b/voxygen/anim/src/biped_large/mod.rs @@ -128,7 +128,7 @@ impl Skeleton for BipedLargeSkeleton { make_bone(upper_torso_mat * control_mat * hand_l_mat * Mat4::::from(self.hold)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::BipedLarge(body) diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index fa3c6ccedf..1188cb19f3 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -68,7 +68,7 @@ impl Skeleton for BipedSmallSkeleton { make_bone(base_mat * Mat4::::from(self.foot_r)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::BipedSmall(body) diff --git a/voxygen/anim/src/bird_large/mod.rs b/voxygen/anim/src/bird_large/mod.rs index 671908a5f9..432cd57338 100644 --- a/voxygen/anim/src/bird_large/mod.rs +++ b/voxygen/anim/src/bird_large/mod.rs @@ -97,7 +97,7 @@ impl Skeleton for BirdLargeSkeleton { make_bone(foot_r_mat), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::BirdLarge(body) diff --git a/voxygen/anim/src/bird_medium/mod.rs b/voxygen/anim/src/bird_medium/mod.rs index aa6ceb4929..8e3d8e056d 100644 --- a/voxygen/anim/src/bird_medium/mod.rs +++ b/voxygen/anim/src/bird_medium/mod.rs @@ -51,7 +51,7 @@ impl Skeleton for BirdMediumSkeleton { make_bone(base_mat * Mat4::::from(self.leg_r)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::BirdMedium(body) diff --git a/voxygen/anim/src/character/mod.rs b/voxygen/anim/src/character/mod.rs index c8e6333b25..6355124ff7 100644 --- a/voxygen/anim/src/character/mod.rs +++ b/voxygen/anim/src/character/mod.rs @@ -141,7 +141,7 @@ impl Skeleton for CharacterSkeleton { make_bone(control_mat * hand_l_mat * Mat4::::from(self.hold)), ]; Offsets { - lantern: (lantern_mat * Vec4::new(0.0, 0.0, -4.0, 1.0)).xyz(), + lantern: Some((lantern_mat * Vec4::new(0.0, 0.0, -4.0, 1.0)).xyz()), // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::Humanoid(body) diff --git a/voxygen/anim/src/dragon/mod.rs b/voxygen/anim/src/dragon/mod.rs index bb9d922c12..135ad304ac 100644 --- a/voxygen/anim/src/dragon/mod.rs +++ b/voxygen/anim/src/dragon/mod.rs @@ -72,7 +72,7 @@ impl Skeleton for DragonSkeleton { make_bone(chest_rear_mat * Mat4::::from(self.foot_br)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::Dragon(body) diff --git a/voxygen/anim/src/fish_medium/mod.rs b/voxygen/anim/src/fish_medium/mod.rs index 03e4b7446f..9675f3322c 100644 --- a/voxygen/anim/src/fish_medium/mod.rs +++ b/voxygen/anim/src/fish_medium/mod.rs @@ -51,7 +51,7 @@ impl Skeleton for FishMediumSkeleton { make_bone(chest_front_mat * Mat4::::from(self.fin_r)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::FishMedium(body) diff --git a/voxygen/anim/src/fish_small/mod.rs b/voxygen/anim/src/fish_small/mod.rs index e388455d9e..8935974732 100644 --- a/voxygen/anim/src/fish_small/mod.rs +++ b/voxygen/anim/src/fish_small/mod.rs @@ -42,7 +42,7 @@ impl Skeleton for FishSmallSkeleton { make_bone(chest_mat * Mat4::::from(self.fin_r)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::FishSmall(body) diff --git a/voxygen/anim/src/fixture/mod.rs b/voxygen/anim/src/fixture/mod.rs index 89b88b6da4..aa5b3e85fd 100644 --- a/voxygen/anim/src/fixture/mod.rs +++ b/voxygen/anim/src/fixture/mod.rs @@ -35,7 +35,7 @@ impl Skeleton for FixtureSkeleton { ) -> Offsets { buf[0] = make_bone(base_mat); Offsets { - lantern: Vec3::default(), + lantern: None, mount_bone: Transform::default(), } } diff --git a/voxygen/anim/src/golem/mod.rs b/voxygen/anim/src/golem/mod.rs index 6383dee947..6088e64beb 100644 --- a/voxygen/anim/src/golem/mod.rs +++ b/voxygen/anim/src/golem/mod.rs @@ -74,7 +74,7 @@ impl Skeleton for GolemSkeleton { make_bone(leg_r_mat * Mat4::::from(self.foot_r)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::Golem(body) diff --git a/voxygen/anim/src/lib.rs b/voxygen/anim/src/lib.rs index 4077a42807..b6637cb39a 100644 --- a/voxygen/anim/src/lib.rs +++ b/voxygen/anim/src/lib.rs @@ -100,7 +100,7 @@ pub fn init() { lazy_static::initialize(&LIB); } // Offsets that will be returned after computing the skeleton matrices pub struct Offsets { - pub lantern: Vec3, + pub lantern: Option>, pub mount_bone: Transform, } diff --git a/voxygen/anim/src/object/mod.rs b/voxygen/anim/src/object/mod.rs index 8e0aff9997..2125edd791 100644 --- a/voxygen/anim/src/object/mod.rs +++ b/voxygen/anim/src/object/mod.rs @@ -40,7 +40,7 @@ impl Skeleton for ObjectSkeleton { make_bone(scale_mat * Mat4::::from(self.bone1)), /* Decorellated from ori */ ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::Object(body) diff --git a/voxygen/anim/src/quadruped_low/mod.rs b/voxygen/anim/src/quadruped_low/mod.rs index 8324f102a8..82dc1bab30 100644 --- a/voxygen/anim/src/quadruped_low/mod.rs +++ b/voxygen/anim/src/quadruped_low/mod.rs @@ -70,7 +70,7 @@ impl Skeleton for QuadrupedLowSkeleton { make_bone(chest_mat * Mat4::::from(self.foot_br)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::QuadrupedLow(body) diff --git a/voxygen/anim/src/quadruped_medium/mod.rs b/voxygen/anim/src/quadruped_medium/mod.rs index 0421678fd5..4726b65ae9 100644 --- a/voxygen/anim/src/quadruped_medium/mod.rs +++ b/voxygen/anim/src/quadruped_medium/mod.rs @@ -103,7 +103,7 @@ impl Skeleton for QuadrupedMediumSkeleton { let mount_orientation = mount_bone_ori; Offsets { - lantern: Vec3::default(), + lantern: None, mount_bone: Transform { position: mount_position, orientation: mount_orientation, diff --git a/voxygen/anim/src/quadruped_small/mod.rs b/voxygen/anim/src/quadruped_small/mod.rs index ea644f4de6..578dcb955d 100644 --- a/voxygen/anim/src/quadruped_small/mod.rs +++ b/voxygen/anim/src/quadruped_small/mod.rs @@ -56,7 +56,7 @@ impl Skeleton for QuadrupedSmallSkeleton { make_bone(chest_mat * Mat4::::from(self.tail)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::QuadrupedSmall(body) diff --git a/voxygen/anim/src/ship/mod.rs b/voxygen/anim/src/ship/mod.rs index 3b75b0aaf9..afecb5e600 100644 --- a/voxygen/anim/src/ship/mod.rs +++ b/voxygen/anim/src/ship/mod.rs @@ -40,7 +40,7 @@ impl Skeleton for ShipSkeleton { make_bone(bone0_mat * Mat4::::from(self.bone3)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::Ship(body) diff --git a/voxygen/anim/src/theropod/mod.rs b/voxygen/anim/src/theropod/mod.rs index 9cb1bef771..b76b0652e9 100644 --- a/voxygen/anim/src/theropod/mod.rs +++ b/voxygen/anim/src/theropod/mod.rs @@ -75,7 +75,7 @@ impl Skeleton for TheropodSkeleton { make_bone(leg_r_mat * Mat4::::from(self.foot_r)), ]; Offsets { - lantern: Vec3::default(), + lantern: None, // TODO: see quadruped_medium for how to animate this mount_bone: Transform { position: common::comp::Body::Theropod(body) diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 593a74e29d..239cc0bf25 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -454,8 +454,13 @@ impl FigureMgr { } else { (vek::Rgb::zero(), 0.0, 0.0, true) }; - if let Some(state) = body.and_then(|body| self.states.get_mut(body, &entity)) { - light_anim.offset = vek::Vec3::from(state.lantern_offset); + if let Some(lantern_offset) = body + .and_then(|body| self.states.get_mut(body, &entity)) + .and_then(|state| state.lantern_offset) + { + light_anim.offset = vek::Vec3::from(lantern_offset); + } else if let Some(body) = body { + light_anim.offset = body.default_light_offset(); } if !light_anim.strength.is_normal() { light_anim.strength = 0.0; @@ -5257,7 +5262,7 @@ impl FigureColLights { } pub struct FigureStateMeta { - lantern_offset: anim::vek::Vec3, + lantern_offset: Option>, // Animation to be applied to mounter of this entity mount_transform: anim::vek::Transform, // Contains the position of this figure or if it is a mounter it will contain the mountee's