Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use crate::{components::character::Player, data::animation::AnimationId};
- use amethyst::{
- animation::AnimationSetPrefab,
- assets::{PrefabData, ProgressCounter},
- ecs::{Entity, WriteStorage},
- renderer::sprite::{prefab::SpriteScenePrefab, SpriteRender},
- Error,
- };
- use log::info;
- use serde::Deserialize;
- #[derive(Debug, Clone, Deserialize)]
- #[serde(rename = "Player")]
- pub struct PlayerPrefab {
- sprite_scene: SpriteScenePrefab,
- animation_set: AnimationSetPrefab<AnimationId, SpriteRender>,
- }
- impl<'a> PrefabData<'a> for PlayerPrefab {
- type SystemData = (
- <SpriteScenePrefab as PrefabData<'a>>::SystemData,
- <AnimationSetPrefab<AnimationId, SpriteRender> as PrefabData<'a>>::SystemData,
- WriteStorage<'a, Player>,
- );
- type Result = ();
- fn add_to_entity(
- &self,
- entity: Entity,
- (sprite_scene_data, animation_set_data, players): &mut Self::SystemData,
- entities: &[Entity],
- children: &[Entity],
- ) -> Result<Self::Result, Error> {
- info!("Player adding to entity {}", entity.id());
- self.sprite_scene
- .add_to_entity(entity, sprite_scene_data, entities, children)?;
- self.animation_set
- .add_to_entity(entity, animation_set_data, entities, children)?;
- players.insert(entity, Player)?;
- info!("Player successfully added to entity {}", entity.id());
- Ok(())
- }
- fn load_sub_assets(
- &mut self,
- progress: &mut ProgressCounter,
- (sprite_scene_data, animation_set_data, _): &mut Self::SystemData,
- ) -> Result<bool, Error> {
- info!("Loading sub assets for player prefab!");
- self.sprite_scene
- .load_sub_assets(progress, sprite_scene_data)
- .and_then(|scene_res| {
- self.animation_set
- .load_sub_assets(progress, animation_set_data)
- .map(|anim_res| scene_res && anim_res)
- })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement