mirror of
https://github.com/bevyengine/bevy
synced 2024-11-10 07:04:33 +00:00
register bevy_transform and bevy_render components
This commit is contained in:
parent
cb3d60a87f
commit
c8d55fe030
11 changed files with 40 additions and 12 deletions
|
@ -6,6 +6,7 @@ edition = "2018"
|
|||
|
||||
[dependencies]
|
||||
bevy_app = { path = "../bevy_app" }
|
||||
bevy_component_registry = { path = "../bevy_component_registry" }
|
||||
bevy_transform = { path = "../bevy_transform" }
|
||||
legion = { path = "../bevy_legion" }
|
||||
glam = { path = "../bevy_glam" }
|
||||
|
|
|
@ -3,7 +3,8 @@ pub mod time;
|
|||
pub mod transform;
|
||||
|
||||
use bevy_app::{stage, AppBuilder, AppPlugin};
|
||||
use bevy_transform::transform_system_bundle;
|
||||
use bevy_component_registry::RegisterComponent;
|
||||
use bevy_transform::{transform_system_bundle, components::{Children, LocalToParent, LocalToWorld, Translation, Rotation, Scale, NonUniformScale}};
|
||||
use legion::prelude::IntoSystem;
|
||||
use time::{start_timer_system, stop_timer_system, Time};
|
||||
|
||||
|
@ -17,6 +18,13 @@ impl AppPlugin for CorePlugin {
|
|||
}
|
||||
|
||||
app.init_resource::<Time>()
|
||||
.register_component::<Children>()
|
||||
.register_component::<LocalToParent>()
|
||||
.register_component::<LocalToWorld>()
|
||||
.register_component::<Translation>()
|
||||
.register_component::<Rotation>()
|
||||
.register_component::<Scale>()
|
||||
.register_component::<NonUniformScale>()
|
||||
.add_system_to_stage(stage::FIRST, start_timer_system.system())
|
||||
.add_system_to_stage(stage::LAST, stop_timer_system.system());
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ use darling::FromMeta;
|
|||
use modules::{get_modules, get_path};
|
||||
use proc_macro::TokenStream;
|
||||
use quote::quote;
|
||||
use syn::{parse_macro_input, Data, DataStruct, DeriveInput, Field, Fields, Index, Member};
|
||||
use syn::{parse_macro_input, Data, DataStruct, DeriveInput, Field, Fields, Index, Member, punctuated::Punctuated};
|
||||
|
||||
#[derive(FromMeta, Debug, Default)]
|
||||
struct PropAttributeArgs {
|
||||
|
@ -19,6 +19,7 @@ static PROP_ATTRIBUTE_NAME: &str = "prop";
|
|||
#[proc_macro_derive(Properties, attributes(prop, module))]
|
||||
pub fn derive_properties(input: TokenStream) -> TokenStream {
|
||||
let ast = parse_macro_input!(input as DeriveInput);
|
||||
let unit_struct_punctuated = Punctuated::new();
|
||||
let fields = match &ast.data {
|
||||
Data::Struct(DataStruct {
|
||||
fields: Fields::Named(fields),
|
||||
|
@ -28,6 +29,10 @@ pub fn derive_properties(input: TokenStream) -> TokenStream {
|
|||
fields: Fields::Unnamed(fields),
|
||||
..
|
||||
}) => &fields.unnamed,
|
||||
Data::Struct(DataStruct {
|
||||
fields: Fields::Unit,
|
||||
..
|
||||
}) => &unit_struct_punctuated,
|
||||
_ => panic!("expected a struct with named fields"),
|
||||
};
|
||||
let fields_and_args = fields
|
||||
|
|
|
@ -5,10 +5,10 @@ use glam::Mat4;
|
|||
use legion::prelude::*;
|
||||
use serde::{Serialize, Deserialize};
|
||||
|
||||
#[derive(Default)]
|
||||
#[derive(Default, Properties)]
|
||||
pub struct ActiveCamera;
|
||||
|
||||
#[derive(Default)]
|
||||
#[derive(Default, Properties)]
|
||||
pub struct ActiveCamera2d;
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
|
|
@ -75,6 +75,9 @@ impl AppPlugin for RenderPlugin {
|
|||
.add_asset::<PipelineDescriptor>()
|
||||
.add_asset_loader::<Texture, PngTextureLoader>()
|
||||
.register_component::<Camera>()
|
||||
.register_component::<Renderable>()
|
||||
.register_component::<ActiveCamera>()
|
||||
.register_component::<ActiveCamera2d>()
|
||||
.init_resource::<RenderGraph>()
|
||||
.init_resource::<PipelineAssignments>()
|
||||
.init_resource::<PipelineCompiler>()
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use crate::math::Vec3;
|
||||
use shrinkwraprs::Shrinkwrap;
|
||||
use std::fmt;
|
||||
use bevy_property::Properties;
|
||||
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy)]
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy, Properties)]
|
||||
#[shrinkwrap(mutable)]
|
||||
pub struct NonUniformScale(pub Vec3);
|
||||
|
||||
|
@ -12,6 +13,12 @@ impl NonUniformScale {
|
|||
}
|
||||
}
|
||||
|
||||
impl Default for NonUniformScale {
|
||||
fn default() -> Self {
|
||||
NonUniformScale(Vec3::new(1.0, 1.0, 1.0))
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Vec3> for NonUniformScale {
|
||||
fn from(scale: Vec3) -> Self {
|
||||
Self(scale)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use crate::ecs::prelude::*;
|
||||
use shrinkwraprs::Shrinkwrap;
|
||||
use bevy_property::Properties;
|
||||
|
||||
#[derive(Shrinkwrap, Debug, Copy, Clone, Eq, PartialEq)]
|
||||
#[derive(Shrinkwrap, Debug, Copy, Clone, Eq, PartialEq, Properties)]
|
||||
#[shrinkwrap(mutable)]
|
||||
pub struct Parent(pub Entity);
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use crate::math::Quat;
|
||||
use shrinkwraprs::Shrinkwrap;
|
||||
use bevy_property::Properties;
|
||||
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy)]
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy, Properties)]
|
||||
#[shrinkwrap(mutable)]
|
||||
pub struct Rotation(pub Quat);
|
||||
impl Rotation {
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use shrinkwraprs::Shrinkwrap;
|
||||
use std::fmt;
|
||||
use bevy_property::Properties;
|
||||
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy)]
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy, Properties)]
|
||||
#[shrinkwrap(mutable)]
|
||||
pub struct Scale(pub f32);
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
use crate::math::Vec3;
|
||||
use shrinkwraprs::Shrinkwrap;
|
||||
use bevy_property::Properties;
|
||||
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy)]
|
||||
#[derive(Shrinkwrap, Debug, PartialEq, Clone, Copy, Properties)]
|
||||
#[shrinkwrap(mutable)]
|
||||
pub struct Translation(pub Vec3);
|
||||
|
||||
|
|
|
@ -6,15 +6,15 @@ pub trait AddDefaultPlugins {
|
|||
|
||||
impl AddDefaultPlugins for AppBuilder {
|
||||
fn add_default_plugins(&mut self) -> &mut Self {
|
||||
#[cfg(feature = "component_registry")]
|
||||
self.add_plugin(bevy_component_registry::ComponentRegistryPlugin::default());
|
||||
|
||||
#[cfg(feature = "core")]
|
||||
self.add_plugin(bevy_core::CorePlugin::default());
|
||||
|
||||
#[cfg(feature = "diagnostic")]
|
||||
self.add_plugin(bevy_diagnostic::DiagnosticsPlugin::default());
|
||||
|
||||
#[cfg(feature = "scene")]
|
||||
self.add_plugin(bevy_component_registry::ComponentRegistryPlugin::default());
|
||||
|
||||
#[cfg(feature = "input")]
|
||||
self.add_plugin(bevy_input::InputPlugin::default());
|
||||
|
||||
|
|
Loading…
Reference in a new issue