more asset loader usage
This commit is contained in:
14
src/keys.rs
14
src/keys.rs
@@ -1,6 +1,6 @@
|
||||
use crate::{
|
||||
GameState, billboards::Billboard, player::Player, sounds::PlaySound,
|
||||
squish_animation::SquishAnimation,
|
||||
GameState, billboards::Billboard, loading_assets::GameAssets, player::Player,
|
||||
sounds::PlaySound, squish_animation::SquishAnimation,
|
||||
};
|
||||
use avian3d::prelude::*;
|
||||
use bevy::prelude::*;
|
||||
@@ -21,14 +21,12 @@ pub fn plugin(app: &mut App) {
|
||||
app.add_observer(on_spawn);
|
||||
}
|
||||
|
||||
fn on_spawn(trigger: Trigger<KeySpawn>, mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
fn on_spawn(trigger: Trigger<KeySpawn>, mut commands: Commands, assets: Res<GameAssets>) {
|
||||
let KeySpawn(position, id) = trigger.event();
|
||||
|
||||
let angle = rand::random::<f32>() * PI * 2.;
|
||||
let spawn_dir = Quat::from_rotation_y(angle) * Vec3::new(0.5, 0.6, 0.).normalize();
|
||||
|
||||
let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/key.glb"));
|
||||
|
||||
commands
|
||||
.spawn((
|
||||
Name::new("key"),
|
||||
@@ -41,7 +39,11 @@ fn on_spawn(trigger: Trigger<KeySpawn>, mut commands: Commands, asset_server: Re
|
||||
RigidBody::Dynamic,
|
||||
Restitution::new(0.6),
|
||||
))
|
||||
.with_child((Billboard, SquishAnimation(2.6), SceneRoot(mesh)));
|
||||
.with_child((
|
||||
Billboard,
|
||||
SquishAnimation(2.6),
|
||||
SceneRoot(assets.mesh_key.clone()),
|
||||
));
|
||||
}
|
||||
|
||||
fn collect_key(
|
||||
|
||||
@@ -42,6 +42,18 @@ pub struct UIAssets {
|
||||
pub struct GameAssets {
|
||||
#[asset(path = "textures/fx/impact.png")]
|
||||
pub impact_atlas: Handle<Image>,
|
||||
|
||||
#[asset(path = "models/key.glb#Scene0")]
|
||||
pub mesh_key: Handle<Scene>,
|
||||
|
||||
#[asset(path = "models/spawn.glb#Scene0")]
|
||||
pub mesh_spawn: Handle<Scene>,
|
||||
|
||||
#[asset(path = "models/alien_naked.glb#Scene0")]
|
||||
pub mesh_alien: Handle<Scene>,
|
||||
|
||||
#[asset(path = "models/cash.glb#Scene0")]
|
||||
pub mesh_cash: Handle<Scene>,
|
||||
}
|
||||
|
||||
pub struct LoadingPlugin;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::{
|
||||
GameState,
|
||||
alien::{ALIEN_ASSET_PATH, Animations},
|
||||
alien::Animations,
|
||||
camera::{CameraArmRotation, CameraTarget},
|
||||
cash::{Cash, CashCollectEvent},
|
||||
control::{
|
||||
@@ -8,6 +8,7 @@ use crate::{
|
||||
controller::{CharacterControllerBundle, PlayerMovement},
|
||||
},
|
||||
heads_ui::HeadChanged,
|
||||
loading_assets::GameAssets,
|
||||
physics_layers::GameLayer,
|
||||
tb_entities::SpawnPoint,
|
||||
};
|
||||
@@ -68,6 +69,7 @@ fn spawn(
|
||||
asset_server: Res<AssetServer>,
|
||||
query: Query<&Transform, With<SpawnPoint>>,
|
||||
mut player_spawned: ResMut<PlayerSpawned>,
|
||||
assets: Res<GameAssets>,
|
||||
) {
|
||||
if player_spawned.spawned {
|
||||
return;
|
||||
@@ -114,9 +116,7 @@ fn spawn(
|
||||
Transform::from_translation(Vec3::new(0., -1.45, 0.))
|
||||
.with_rotation(Quat::from_rotation_y(std::f32::consts::PI))
|
||||
.with_scale(Vec3::splat(1.4)),
|
||||
SceneRoot(
|
||||
asset_server.load(GltfAssetLabel::Scene(0).from_asset(ALIEN_ASSET_PATH)),
|
||||
),
|
||||
SceneRoot(assets.mesh_alien.clone()),
|
||||
))
|
||||
.with_child((
|
||||
Name::from("head"),
|
||||
|
||||
@@ -6,6 +6,7 @@ use bevy_trenchbroom::class::Target;
|
||||
use bevy_trenchbroom::prelude::*;
|
||||
|
||||
use crate::cash::Cash;
|
||||
use crate::loading_assets::GameAssets;
|
||||
use crate::physics_layers::GameLayer;
|
||||
|
||||
#[derive(PointClass, Component, Reflect, Default)]
|
||||
@@ -17,7 +18,7 @@ pub struct SpawnPoint {}
|
||||
|
||||
impl SpawnPoint {
|
||||
fn on_add(mut world: DeferredWorld, entity: Entity, _id: ComponentId) {
|
||||
let Some(asset_server) = world.get_resource::<AssetServer>() else {
|
||||
let Some(assets) = world.get_resource::<GameAssets>() else {
|
||||
return;
|
||||
};
|
||||
|
||||
@@ -30,7 +31,7 @@ impl SpawnPoint {
|
||||
let mut this_transform = *this_transform;
|
||||
this_transform.translation += Vec3::new(0., -0.3, 0.);
|
||||
|
||||
let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/spawn.glb"));
|
||||
let mesh = assets.mesh_spawn.clone();
|
||||
|
||||
world.commands().entity(entity).insert((
|
||||
this_transform,
|
||||
@@ -125,6 +126,10 @@ impl EnemySpawn {
|
||||
return;
|
||||
};
|
||||
|
||||
let Some(assets) = world.get_resource::<GameAssets>() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let this = world.get_entity(entity).unwrap().get::<Self>().unwrap();
|
||||
let this_transform = world
|
||||
.get_entity(entity)
|
||||
@@ -135,7 +140,7 @@ impl EnemySpawn {
|
||||
let mut this_transform = *this_transform;
|
||||
this_transform.translation += Vec3::new(0., 1., 0.);
|
||||
|
||||
let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/alien_naked.glb"));
|
||||
let mesh = assets.mesh_alien.clone();
|
||||
|
||||
let head_mesh = asset_server
|
||||
.load(GltfAssetLabel::Scene(0).from_asset(format!("models/heads/{}.glb", this.head)));
|
||||
@@ -179,11 +184,11 @@ pub struct CashSpawn {}
|
||||
|
||||
impl CashSpawn {
|
||||
fn on_add(mut world: DeferredWorld, entity: Entity, _id: ComponentId) {
|
||||
let Some(asset_server) = world.get_resource::<AssetServer>() else {
|
||||
let Some(assets) = world.get_resource::<GameAssets>() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/cash.glb"));
|
||||
let mesh = assets.mesh_cash.clone();
|
||||
|
||||
world.commands().entity(entity).insert((
|
||||
Name::new("cash"),
|
||||
|
||||
Reference in New Issue
Block a user