#![doc(html_root_url = "https://docs.rs/bevy_tilemap/0.4.0")]
#![warn(missing_docs)]
#![deny(dead_code, unused_imports)]
#![allow(clippy::too_many_arguments, clippy::type_complexity)]
#![warn(
clippy::cast_lossless,
clippy::decimal_literal_representation,
clippy::else_if_without_else,
clippy::indexing_slicing,
clippy::let_underscore_must_use,
clippy::missing_docs_in_private_items,
clippy::missing_errors_doc,
clippy::panic_in_result_fn,
clippy::print_stdout,
clippy::unwrap_in_result
)]
#[cfg(feature = "types")]
pub extern crate bevy_tilemap_types;
#[cfg(feature = "types")]
#[doc(inline)]
pub use bevy_tilemap_types::dimension;
#[cfg(feature = "types")]
#[doc(inline)]
pub use bevy_tilemap_types::point;
#[no_implicit_prelude]
pub mod chunk;
#[no_implicit_prelude]
pub mod default_plugin;
#[no_implicit_prelude]
pub mod entity;
#[no_implicit_prelude]
pub mod prelude;
#[no_implicit_prelude]
pub mod stage {
pub const TILEMAP: &str = "tilemap";
}
#[no_implicit_prelude]
pub mod event;
#[no_implicit_prelude]
mod system;
#[no_implicit_prelude]
pub mod tile;
#[no_implicit_prelude]
pub mod tilemap;
use crate::{event::TilemapChunkEvent, lib::*};
pub use crate::{
tile::Tile,
tilemap::{Tilemap, TilemapLayer},
};
#[derive(Default)]
pub struct TilemapPlugin;
#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemLabel)]
pub enum TilemapSystem {
Events,
AutoSpawn,
}
impl Plugin for TilemapPlugin {
fn build(&self, app: &mut AppBuilder) {
app.add_asset::<Tilemap>()
.add_stage_before(
CoreStage::PostUpdate,
stage::TILEMAP,
SystemStage::parallel(),
)
.add_system_to_stage(
stage::TILEMAP,
crate::system::tilemap_events
.system()
.label(TilemapSystem::Events),
)
.add_system_to_stage(
stage::TILEMAP,
crate::chunk::system::chunk_update
.system()
.after(TilemapSystem::Events),
)
.add_system_to_stage(
stage::TILEMAP,
crate::chunk::system::chunk_auto_radius
.system()
.after(TilemapSystem::Events),
)
.add_system_to_stage(
stage::TILEMAP,
crate::chunk::system::chunk_auto_spawn
.system()
.label(TilemapSystem::AutoSpawn)
.after(TilemapSystem::Events),
)
.add_system_to_stage(
stage::TILEMAP,
crate::system::tilemap_visibility_change.system(),
);
let world = app.world_mut().cell();
let mut pipelines = world
.get_resource_mut::<Assets<PipelineDescriptor>>()
.unwrap();
let mut shaders = world.get_resource_mut::<Assets<Shader>>().unwrap();
crate::chunk::render::add_tilemap_graph(&mut pipelines, &mut shaders);
}
}
#[no_implicit_prelude]
mod lib {
extern crate bevy_app;
extern crate bevy_asset;
#[cfg(test)]
extern crate bevy_core;
extern crate bevy_ecs;
extern crate bevy_log;
extern crate bevy_math;
extern crate bevy_reflect;
extern crate bevy_render;
extern crate bevy_sprite;
extern crate bevy_tilemap_types;
extern crate bevy_transform;
extern crate bevy_utils;
extern crate bevy_window;
pub extern crate bitflags;
#[cfg(feature = "serde")]
extern crate serde;
extern crate std;
#[cfg(test)]
pub(crate) use bevy_app::ScheduleRunnerPlugin;
pub(crate) use bevy_app::{
AppBuilder, CoreStage, Events, Plugin, PluginGroup, PluginGroupBuilder,
};
pub(crate) use bevy_asset::{AddAsset, Assets, Handle, HandleUntyped};
#[cfg(test)]
pub(crate) use bevy_asset::{AssetPlugin, HandleId};
#[cfg(test)]
pub(crate) use bevy_core::CorePlugin;
#[cfg(test)]
pub(crate) use bevy_ecs::system::CommandQueue;
pub(crate) use bevy_ecs::{
bundle::Bundle,
entity::Entity,
query::Changed,
schedule::{ParallelSystemDescriptorCoercion, SystemLabel, SystemStage},
system::{Commands, IntoSystem, Query, Res, ResMut},
};
pub(crate) use bevy_log::{error, info, warn};
pub(crate) use bevy_math::{Vec2, Vec3};
pub(crate) use bevy_reflect::{TypeUuid, Uuid};
pub(crate) use bevy_render::{
camera::Camera,
color::Color,
draw::{Draw, Visible},
mesh::{Indices, Mesh},
pipeline::{
BlendFactor, BlendOperation, BlendState, ColorTargetState, ColorWrite, CompareFunction,
DepthBiasState, DepthStencilState, PipelineDescriptor, PrimitiveTopology,
RenderPipeline, RenderPipelines, StencilFaceState, StencilState,
},
render_graph::base::MainPass,
shader::{Shader, ShaderStage, ShaderStages},
texture::TextureFormat,
};
pub(crate) use bevy_sprite::TextureAtlas;
pub(crate) use bevy_tilemap_types::{
dimension::{Dimension2, Dimension3, DimensionError},
point::{Point2, Point3},
};
#[cfg(test)]
pub(crate) use bevy_transform::components::Children;
pub(crate) use bevy_transform::{
components::{GlobalTransform, Parent, Transform},
hierarchy::{BuildChildren, DespawnRecursiveExt},
};
pub(crate) use bevy_utils::{HashMap, HashSet};
pub(crate) use bevy_window::WindowResized;
pub(crate) use crate::bitflags::*;
#[cfg(feature = "serde")]
pub(crate) use serde::{Deserialize, Serialize};
pub(crate) use std::{
boxed::Box,
clone::Clone,
cmp::Ord,
convert::{AsMut, AsRef, From, Into},
default::Default,
error::Error,
fmt::{Debug, Display, Formatter, Result as FmtResult},
iter::{Extend, IntoIterator, Iterator},
ops::FnMut,
option::Option::{self, *},
result::Result::{self, *},
vec::Vec,
};
pub(crate) use std::{vec, write};
#[cfg(debug_assertions)]
#[allow(unused_imports)]
pub(crate) use bevy_log::debug;
#[cfg(debug_assertions)]
#[allow(unused_imports)]
pub(crate) use std::println;
#[cfg(test)]
pub(crate) use std::assert_eq;
}