Third person camera added
This commit is contained in:
parent
a121c738b7
commit
b3abd36eff
Binary file not shown.
@ -2,3 +2,4 @@ pub mod player_character;
|
|||||||
pub mod player_hitbox;
|
pub mod player_hitbox;
|
||||||
pub mod in_player_hands_parent;
|
pub mod in_player_hands_parent;
|
||||||
pub mod player_eye;
|
pub mod player_eye;
|
||||||
|
pub mod third_person_camera;
|
@ -3,6 +3,8 @@ use bevy_rapier3d::prelude::*;
|
|||||||
|
|
||||||
use crate::{comps::core::markers::{proxy::physics::rapier::LinkToPlayer, camera::MainCamera}, logic::core::player::player_values_state::PlayerValuesState};
|
use crate::{comps::core::markers::{proxy::physics::rapier::LinkToPlayer, camera::MainCamera}, logic::core::player::player_values_state::PlayerValuesState};
|
||||||
|
|
||||||
|
use super::third_person_camera::{ThirdPersonCameraProxy, ThirdPersonCamera};
|
||||||
|
|
||||||
|
|
||||||
#[derive(Component, Reflect, Default, Debug)]
|
#[derive(Component, Reflect, Default, Debug)]
|
||||||
#[reflect(Component)]
|
#[reflect(Component)]
|
||||||
@ -11,6 +13,7 @@ pub struct PlayerEye;
|
|||||||
pub fn insert_components_into_spawned_player(
|
pub fn insert_components_into_spawned_player(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
eye_query: Query<Entity, Added<PlayerEye>>,
|
eye_query: Query<Entity, Added<PlayerEye>>,
|
||||||
|
third_person_camera_query: Query<Entity, Added<ThirdPersonCameraProxy>>,
|
||||||
player_collider_query: Query<Entity, (With<LinkToPlayer>, With<Collider>, Added<Collider>)>,
|
player_collider_query: Query<Entity, (With<LinkToPlayer>, With<Collider>, Added<Collider>)>,
|
||||||
player_values_state: Res<PlayerValuesState>,
|
player_values_state: Res<PlayerValuesState>,
|
||||||
) {
|
) {
|
||||||
@ -31,6 +34,29 @@ pub fn insert_components_into_spawned_player(
|
|||||||
.id();
|
.id();
|
||||||
commands.entity(eye).add_child(camera);
|
commands.entity(eye).add_child(camera);
|
||||||
}
|
}
|
||||||
|
for third_person_camera in third_person_camera_query.iter() {
|
||||||
|
|
||||||
|
let mut cam_bundle = Camera3dBundle {
|
||||||
|
transform: Transform::from_translation(Vec3::ZERO),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
cam_bundle.camera.is_active = false;
|
||||||
|
cam_bundle.camera.order = 1;
|
||||||
|
|
||||||
|
// Spawn camera
|
||||||
|
let camera = commands
|
||||||
|
.spawn(cam_bundle)
|
||||||
|
//s.insert(Skybox(skybox_handle.clone()))
|
||||||
|
.insert(VisibilityBundle {
|
||||||
|
visibility: Visibility::Inherited,
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
.insert(ThirdPersonCamera)
|
||||||
|
//.push_children(&[player_hand])
|
||||||
|
.id();
|
||||||
|
commands.entity(third_person_camera).add_child(camera);
|
||||||
|
|
||||||
|
}
|
||||||
for entity in player_collider_query.iter() {
|
for entity in player_collider_query.iter() {
|
||||||
commands.entity(entity)
|
commands.entity(entity)
|
||||||
.insert(Restitution::coefficient(0.0))
|
.insert(Restitution::coefficient(0.0))
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Component, Reflect, Default, Debug)]
|
||||||
|
#[reflect(Component)]
|
||||||
|
pub struct ThirdPersonCameraProxy;
|
||||||
|
|
||||||
|
#[derive(Component, Reflect, Default, Debug)]
|
||||||
|
#[reflect(Component)]
|
||||||
|
pub struct ThirdPersonCamera;
|
@ -2,7 +2,7 @@ use bevy::app::{Plugin, Update};
|
|||||||
|
|
||||||
use crate::setup::load_state::update_game_load_state;
|
use crate::setup::load_state::update_game_load_state;
|
||||||
|
|
||||||
use super::{character::{player_hitbox::PlayerHitBox, player_character::PlayerCharacter, player_eye::{PlayerEye, insert_components_into_spawned_player}, in_player_hands_parent::{InPlayerHandsParent, insert_components_into_player_hand}}, physics::{rapier::{AutoAABBCollider, physics_replace_proxies}, self}};
|
use super::{character::{player_hitbox::PlayerHitBox, player_character::PlayerCharacter, player_eye::{PlayerEye, insert_components_into_spawned_player}, in_player_hands_parent::{InPlayerHandsParent, insert_components_into_player_hand}, third_person_camera::ThirdPersonCameraProxy}, physics::{rapier::{AutoAABBCollider, physics_replace_proxies}, self}};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -18,6 +18,7 @@ impl Plugin for ProxyComponentsPlugin {
|
|||||||
app.register_type::<PlayerCharacter>();
|
app.register_type::<PlayerCharacter>();
|
||||||
app.register_type::<PlayerEye>();
|
app.register_type::<PlayerEye>();
|
||||||
app.register_type::<InPlayerHandsParent>();
|
app.register_type::<InPlayerHandsParent>();
|
||||||
|
app.register_type::<ThirdPersonCameraProxy>();
|
||||||
|
|
||||||
// Physics
|
// Physics
|
||||||
app.register_type::<AutoAABBCollider>();
|
app.register_type::<AutoAABBCollider>();
|
||||||
|
49
src/logic/core/player/animate_player.rs
Normal file
49
src/logic/core/player/animate_player.rs
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use bevy::prelude::*;
|
||||||
|
use bevy_rapier3d::dynamics::Velocity;
|
||||||
|
|
||||||
|
use crate::{setup::{animations::AllAnimations, assets::GltfAssets}, comps::core::markers::{player::Player, proxy::character::player_character::PlayerCharacter}, ui::game::game_ui_state::GameUiState};
|
||||||
|
|
||||||
|
use super::player_movement::{PlayerLinearYState, PlayerLinearXZState};
|
||||||
|
|
||||||
|
#[allow(unused)]
|
||||||
|
pub fn animate_player(
|
||||||
|
all_animations: Res<AllAnimations>,
|
||||||
|
assets_gltf: Res<GltfAssets>,
|
||||||
|
player_query: Query<
|
||||||
|
(
|
||||||
|
&Velocity,
|
||||||
|
&PlayerLinearYState,
|
||||||
|
&PlayerLinearXZState,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
With<Player>,
|
||||||
|
Changed<PlayerLinearXZState>,
|
||||||
|
Changed<PlayerLinearYState>
|
||||||
|
)
|
||||||
|
>,
|
||||||
|
mut player_character_animation_player_query: Query<&mut AnimationPlayer, With<PlayerCharacter>>,
|
||||||
|
time: Res<Time>,
|
||||||
|
game_ui_state: Res<GameUiState>,
|
||||||
|
) {
|
||||||
|
for (player_velocity, player_linear_y_state, player_linear_xz_state) in player_query.iter() {
|
||||||
|
for mut animation_player in player_character_animation_player_query.iter_mut() {
|
||||||
|
if player_linear_xz_state.is_sprinting() {
|
||||||
|
let clip_to_play = all_animations.character_animations.clone().expect("No Character animations in all_animations Resource").run_animation.clone_weak();
|
||||||
|
if !animation_player.is_playing_clip(&clip_to_play) {
|
||||||
|
animation_player.start_with_transition(clip_to_play, Duration::from_millis(100));
|
||||||
|
animation_player.set_speed(1.8);
|
||||||
|
animation_player.repeat();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let clip_to_play = all_animations.character_animations.clone().expect("No Character animations in all_animations Resource").idle_animation.clone_weak();
|
||||||
|
if !animation_player.is_playing_clip(&clip_to_play) {
|
||||||
|
animation_player.play(clip_to_play);
|
||||||
|
animation_player.set_speed(0.4);
|
||||||
|
animation_player.repeat();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
src/logic/core/player/camera_switching.rs
Normal file
19
src/logic/core/player/camera_switching.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
use bevy::prelude::*;
|
||||||
|
|
||||||
|
use crate::comps::core::markers::{camera::MainCamera, proxy::character::third_person_camera::ThirdPersonCamera};
|
||||||
|
|
||||||
|
pub fn switch_camera(
|
||||||
|
// mut commands: Commands,
|
||||||
|
mut main_camera_query: Query<&mut Camera, With<MainCamera>>,
|
||||||
|
mut tpc_query: Query<&mut Camera, (With<ThirdPersonCamera>, Without<MainCamera>)>,
|
||||||
|
keyboard_input: Res<Input<KeyCode>>,
|
||||||
|
) {
|
||||||
|
if keyboard_input.just_pressed(KeyCode::Key0) {
|
||||||
|
for mut main_cam in main_camera_query.iter_mut() {
|
||||||
|
main_cam.is_active = !main_cam.is_active;
|
||||||
|
}
|
||||||
|
for mut tpc in tpc_query.iter_mut() {
|
||||||
|
tpc.is_active = !tpc.is_active;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -15,9 +15,8 @@ use crate::{
|
|||||||
},
|
},
|
||||||
logic::core::guns::{player_firing::PlayerFiringInfo, shoot::shoot_bullet},
|
logic::core::guns::{player_firing::PlayerFiringInfo, shoot::shoot_bullet},
|
||||||
setup::{
|
setup::{
|
||||||
animations::AllFirearmAnimations,
|
|
||||||
equipment::{Equipment, EquipmentChangeEvent},
|
equipment::{Equipment, EquipmentChangeEvent},
|
||||||
load_state::GameLoadState, assets::GltfAssets,
|
load_state::GameLoadState, assets::GltfAssets, animations::AllAnimations,
|
||||||
},
|
},
|
||||||
ui::game::{game_ui_state::GameUiState, hud::hud::HudState},
|
ui::game::{game_ui_state::GameUiState, hud::hud::HudState},
|
||||||
utils::{self, rad_deg::radians_from_degrees},
|
utils::{self, rad_deg::radians_from_degrees},
|
||||||
@ -32,7 +31,7 @@ pub struct CaptureHandUsageResourcesParams<'w> {
|
|||||||
meshes: ResMut<'w, Assets<Mesh>>,
|
meshes: ResMut<'w, Assets<Mesh>>,
|
||||||
materials: ResMut<'w, Assets<StandardMaterial>>,
|
materials: ResMut<'w, Assets<StandardMaterial>>,
|
||||||
animation_clips: Res<'w, Assets<AnimationClip>>,
|
animation_clips: Res<'w, Assets<AnimationClip>>,
|
||||||
all_firearm_animations: Res<'w, AllFirearmAnimations>,
|
all_animations: Res<'w, AllAnimations>,
|
||||||
time: Res<'w, Time>,
|
time: Res<'w, Time>,
|
||||||
assets_gltf: Res<'w, GltfAssets>,
|
assets_gltf: Res<'w, GltfAssets>,
|
||||||
loaded_gltf_assets: Res<'w, Assets<Gltf>>,
|
loaded_gltf_assets: Res<'w, Assets<Gltf>>,
|
||||||
@ -136,8 +135,8 @@ pub fn capture_hand_usage(
|
|||||||
&children,
|
&children,
|
||||||
) {
|
) {
|
||||||
if let Some(firearm_animations) = resources
|
if let Some(firearm_animations) = resources
|
||||||
.all_firearm_animations
|
.all_animations
|
||||||
.animations
|
.firearm_animations
|
||||||
.iter()
|
.iter()
|
||||||
.find(|animation| &animation.firearm == &player_firearm)
|
.find(|animation| &animation.firearm == &player_firearm)
|
||||||
{
|
{
|
||||||
@ -170,8 +169,8 @@ pub fn capture_hand_usage(
|
|||||||
&children,
|
&children,
|
||||||
) {
|
) {
|
||||||
if let Some(firearm_animations) = resources
|
if let Some(firearm_animations) = resources
|
||||||
.all_firearm_animations
|
.all_animations
|
||||||
.animations
|
.firearm_animations
|
||||||
.iter()
|
.iter()
|
||||||
.find(|animation| &animation.firearm == &player_firearm)
|
.find(|animation| &animation.firearm == &player_firearm)
|
||||||
{
|
{
|
||||||
|
@ -5,3 +5,5 @@ pub mod inventory;
|
|||||||
pub mod player_movement;
|
pub mod player_movement;
|
||||||
pub mod player_values_state;
|
pub mod player_values_state;
|
||||||
pub mod player_vertical_sync;
|
pub mod player_vertical_sync;
|
||||||
|
pub mod animate_player;
|
||||||
|
pub mod camera_switching;
|
@ -94,6 +94,12 @@ pub struct PlayerMovementInput {
|
|||||||
pub sprint: bool,
|
pub sprint: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
if let Some(animations) = &resources.all_animations.character_animations {
|
||||||
|
animation_player.start(animations.run_animation.clone_weak());
|
||||||
|
}
|
||||||
|
*/
|
||||||
/// Applies game logic to determine how player should move.
|
/// Applies game logic to determine how player should move.
|
||||||
pub fn move_player(
|
pub fn move_player(
|
||||||
player_movement_input: PlayerMovementInput,
|
player_movement_input: PlayerMovementInput,
|
||||||
|
@ -31,7 +31,7 @@ fn setup_plugins(application: &mut App) {
|
|||||||
.add_plugins(DefaultPlugins.set(AssetPlugin::default()))
|
.add_plugins(DefaultPlugins.set(AssetPlugin::default()))
|
||||||
//.add_plugins(DefaultInspectorConfigPlugin)
|
//.add_plugins(DefaultInspectorConfigPlugin)
|
||||||
.add_plugins(RapierPhysicsPlugin::<NoUserData>::default())
|
.add_plugins(RapierPhysicsPlugin::<NoUserData>::default())
|
||||||
.add_plugins(RapierDebugRenderPlugin::default())
|
//.add_plugins(RapierDebugRenderPlugin::default())
|
||||||
.add_plugins(ComponentsFromGltfPlugin)
|
.add_plugins(ComponentsFromGltfPlugin)
|
||||||
//.add_plugins(bevy_egui::EguiPlugin)
|
//.add_plugins(bevy_egui::EguiPlugin)
|
||||||
//.add_plugins(WorldInspectorPlugin::new())
|
//.add_plugins(WorldInspectorPlugin::new())
|
||||||
|
@ -14,11 +14,11 @@ use crate::{
|
|||||||
},
|
},
|
||||||
hands::{capture_hand_usage, interact_action},
|
hands::{capture_hand_usage, interact_action},
|
||||||
player_values_state::PlayerValuesState,
|
player_values_state::PlayerValuesState,
|
||||||
player_vertical_sync::sync_player_y_state,
|
player_vertical_sync::sync_player_y_state, animate_player::animate_player, camera_switching::switch_camera,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup::{
|
setup::{
|
||||||
animations::{load_animations, AllFirearmAnimations},
|
animations::{load_animations, AllAnimations},
|
||||||
assets::load_all_assets,
|
assets::load_all_assets,
|
||||||
equipment::{change_equipment, EquipmentChangeEvent},
|
equipment::{change_equipment, EquipmentChangeEvent},
|
||||||
load_state::GameLoadState,
|
load_state::GameLoadState,
|
||||||
@ -33,7 +33,7 @@ use super::{
|
|||||||
pub fn load_scene(application: &mut App) {
|
pub fn load_scene(application: &mut App) {
|
||||||
application.insert_resource(GameLoadState::default());
|
application.insert_resource(GameLoadState::default());
|
||||||
application.insert_resource(MouseMovementSettings::default());
|
application.insert_resource(MouseMovementSettings::default());
|
||||||
application.insert_resource(AllFirearmAnimations::default());
|
application.insert_resource(AllAnimations::default());
|
||||||
application.insert_resource(PlayerValuesState::default());
|
application.insert_resource(PlayerValuesState::default());
|
||||||
|
|
||||||
application.add_plugins(SpawnerPlugin);
|
application.add_plugins(SpawnerPlugin);
|
||||||
@ -55,9 +55,12 @@ pub fn load_scene(application: &mut App) {
|
|||||||
application.add_systems(Update, update_camera_vertical_position);
|
application.add_systems(Update, update_camera_vertical_position);
|
||||||
application.add_systems(Update, capture_hand_usage);
|
application.add_systems(Update, capture_hand_usage);
|
||||||
application.add_systems(Update, interact_action);
|
application.add_systems(Update, interact_action);
|
||||||
|
application.add_systems(Update, switch_camera);
|
||||||
|
|
||||||
application.add_systems(Update, change_equipment.before(player_spawner));
|
application.add_systems(Update, change_equipment.before(player_spawner));
|
||||||
application.add_systems(Update, (despawn_muzzle_flashes, despawn_stray_bullets));
|
application.add_systems(Update, (despawn_muzzle_flashes, despawn_stray_bullets));
|
||||||
|
|
||||||
|
application.add_systems(Update, animate_player);
|
||||||
//application.add_systems(Update, register_bullet_hits);
|
//application.add_systems(Update, register_bullet_hits);
|
||||||
|
|
||||||
application.add_event::<EquipmentChangeEvent>();
|
application.add_event::<EquipmentChangeEvent>();
|
||||||
|
@ -8,7 +8,7 @@ use bevy::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::comps::core::markers::camera::MainCamera;
|
use crate::comps::core::markers::{camera::MainCamera, proxy::character::third_person_camera::ThirdPersonCamera};
|
||||||
|
|
||||||
pub const CUBEMAPS: &[(&str, CompressedImageFormats)] =
|
pub const CUBEMAPS: &[(&str, CompressedImageFormats)] =
|
||||||
&[("skybox/skybox.png", CompressedImageFormats::NONE)];
|
&[("skybox/skybox.png", CompressedImageFormats::NONE)];
|
||||||
@ -25,7 +25,7 @@ pub fn set_skybox_if_loaded(
|
|||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
mut images: ResMut<Assets<Image>>,
|
mut images: ResMut<Assets<Image>>,
|
||||||
mut cubemap: ResMut<Cubemap>,
|
mut cubemap: ResMut<Cubemap>,
|
||||||
mut camera_query: Query<Entity, With<MainCamera>>,
|
mut camera_query: Query<Entity, Or<(With<MainCamera>, With<ThirdPersonCamera>)>>,
|
||||||
) {
|
) {
|
||||||
if !cubemap.is_loaded
|
if !cubemap.is_loaded
|
||||||
&& asset_server.get_load_state(&cubemap.image_handle) == Some(LoadState::Loaded)
|
&& asset_server.get_load_state(&cubemap.image_handle) == Some(LoadState::Loaded)
|
||||||
|
@ -4,18 +4,26 @@ use crate::logic::core::guns::firearm::Firearm;
|
|||||||
|
|
||||||
use super::{assets::GltfAssets, load_state::GameLoadState};
|
use super::{assets::GltfAssets, load_state::GameLoadState};
|
||||||
|
|
||||||
#[derive(Resource, Default, Reflect)]
|
#[derive(Resource, Default, Reflect, Clone)]
|
||||||
#[reflect(Resource)]
|
#[reflect(Resource)]
|
||||||
pub struct AllFirearmAnimations {
|
pub struct AllAnimations {
|
||||||
pub animations: Vec<FirearmAnimations>,
|
pub firearm_animations: Vec<FirearmAnimations>,
|
||||||
|
pub character_animations: Option<CharacterAnimations>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Reflect)]
|
#[derive(Reflect, Clone)]
|
||||||
pub struct FirearmAnimations {
|
pub struct FirearmAnimations {
|
||||||
pub firearm: Firearm,
|
pub firearm: Firearm,
|
||||||
pub reload_magazine: Handle<AnimationClip>,
|
pub reload_magazine: Handle<AnimationClip>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Reflect, Default, Clone)]
|
||||||
|
pub struct CharacterAnimations {
|
||||||
|
pub run_animation: Handle<AnimationClip>,
|
||||||
|
pub idle_animation: Handle<AnimationClip>,
|
||||||
|
pub initial_pose: Handle<AnimationClip>,
|
||||||
|
}
|
||||||
|
|
||||||
/// System to load animations once the Gltf file is loaded.
|
/// System to load animations once the Gltf file is loaded.
|
||||||
pub fn load_animations(
|
pub fn load_animations(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
@ -30,21 +38,33 @@ pub fn load_animations(
|
|||||||
if assets_gltf.assets.len() != loaded_gltf_assets.len() {
|
if assets_gltf.assets.len() != loaded_gltf_assets.len() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let mut all_firearm_animations = AllFirearmAnimations {
|
let mut firearm_animations = Vec::new();
|
||||||
animations: Vec::new(),
|
let mut character_animations = None;
|
||||||
};
|
|
||||||
for gltf_asset in assets_gltf.assets.iter() {
|
for gltf_asset in assets_gltf.assets.iter() {
|
||||||
if gltf_asset.asset_type.is_firearm() {
|
if gltf_asset.asset_type.is_firearm() {
|
||||||
if let Some(loaded_gltf) = loaded_gltf_assets.get(&gltf_asset.asset) {
|
if let Some(loaded_gltf) = loaded_gltf_assets.get(&gltf_asset.asset) {
|
||||||
// Needs to have all firearm animations
|
// Needs to have all firearm animations
|
||||||
let reload_animation = &loaded_gltf.animations[0];
|
let reload_animation = &loaded_gltf.animations[0];
|
||||||
all_firearm_animations.animations.push(FirearmAnimations {
|
firearm_animations.push(FirearmAnimations {
|
||||||
firearm: gltf_asset.asset_type.get_firearm().clone(),
|
firearm: gltf_asset.asset_type.get_firearm().clone(),
|
||||||
reload_magazine: reload_animation.clone(),
|
reload_magazine: reload_animation.clone(),
|
||||||
})
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if gltf_asset.asset_type.is_character() {
|
||||||
|
if let Some(loaded_gltf) = loaded_gltf_assets.get(&gltf_asset.asset) {
|
||||||
|
// Needs to have all player_animations
|
||||||
|
let initial_pose = &loaded_gltf.animations[0];
|
||||||
|
let player_idle = &loaded_gltf.animations[1];
|
||||||
|
let player_run = &loaded_gltf.animations[2];
|
||||||
|
character_animations = Some(CharacterAnimations { run_animation: player_run.clone(), idle_animation: player_idle.clone(), initial_pose: initial_pose.clone() });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
commands.insert_resource(all_firearm_animations);
|
let all_animations = AllAnimations {
|
||||||
|
firearm_animations: Vec::new(),
|
||||||
|
character_animations
|
||||||
|
};
|
||||||
|
commands.insert_resource(all_animations);
|
||||||
game_load_state.animations_loaded = true;
|
game_load_state.animations_loaded = true;
|
||||||
}
|
}
|
||||||
|
@ -65,4 +65,10 @@ impl GltfAssetType {
|
|||||||
_ => panic!("Called get_firearm on Non-Firearm GltfAssetType"),
|
_ => panic!("Called get_firearm on Non-Firearm GltfAssetType"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pub fn is_character(&self) -> bool {
|
||||||
|
match self {
|
||||||
|
GltfAssetType::Character => true,
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ use crate::{
|
|||||||
},
|
},
|
||||||
scenes::scene1::skybox::Cubemap,
|
scenes::scene1::skybox::Cubemap,
|
||||||
setup::{
|
setup::{
|
||||||
animations::{AllFirearmAnimations, FirearmAnimations},
|
animations::{FirearmAnimations, AllAnimations},
|
||||||
assets::{GltfAssetType, GltfAssets},
|
assets::{GltfAssetType, GltfAssets},
|
||||||
equipment::Equipment,
|
equipment::Equipment,
|
||||||
load_state::GameLoadState,
|
load_state::GameLoadState,
|
||||||
@ -55,7 +55,7 @@ impl Plugin for MainEditorUiPlugin {
|
|||||||
.register_type::<PlayerLinearXZState>()
|
.register_type::<PlayerLinearXZState>()
|
||||||
.register_type::<PlayerMovementInput>()
|
.register_type::<PlayerMovementInput>()
|
||||||
.register_type::<Cubemap>()
|
.register_type::<Cubemap>()
|
||||||
.register_type::<AllFirearmAnimations>()
|
.register_type::<AllAnimations>()
|
||||||
.register_type::<FirearmAnimations>()
|
.register_type::<FirearmAnimations>()
|
||||||
.register_type::<GltfAssetType>()
|
.register_type::<GltfAssetType>()
|
||||||
.register_type::<GltfAssets>()
|
.register_type::<GltfAssets>()
|
||||||
|
Loading…
Reference in New Issue
Block a user