From e337ff59b85b19df66c599b4673400cb4e54633e Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Mon, 25 May 2020 21:57:48 -0700 Subject: [PATCH] props: register "pbr" components --- crates/bevy_pbr/Cargo.toml | 2 ++ crates/bevy_pbr/src/lib.rs | 12 ++++++++---- crates/bevy_pbr/src/light.rs | 2 ++ crates/bevy_property/src/impl_property_std.rs | 3 ++- crates/bevy_render/src/color.rs | 4 +++- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/crates/bevy_pbr/Cargo.toml b/crates/bevy_pbr/Cargo.toml index 5f40e09399..c3f19db5b3 100644 --- a/crates/bevy_pbr/Cargo.toml +++ b/crates/bevy_pbr/Cargo.toml @@ -7,9 +7,11 @@ edition = "2018" [dependencies] bevy_app = { path = "../bevy_app" } bevy_asset = { path = "../bevy_asset" } +bevy_component_registry = { path = "../bevy_component_registry" } bevy_core = { path = "../bevy_core" } bevy_derive = { path = "../bevy_derive" } bevy_render = { path = "../bevy_render" } +bevy_property = { path = "../bevy_property" } bevy_transform = { path = "../bevy_transform" } bevy_window = { path = "../bevy_window" } legion = { path = "../bevy_legion"} diff --git a/crates/bevy_pbr/src/lib.rs b/crates/bevy_pbr/src/lib.rs index 16c5fbcb34..72fce9d0b2 100644 --- a/crates/bevy_pbr/src/lib.rs +++ b/crates/bevy_pbr/src/lib.rs @@ -9,8 +9,10 @@ pub use forward_pbr_render_graph::*; use bevy_app::{stage, AppBuilder, AppPlugin}; use bevy_asset::AddAsset; +use bevy_component_registry::RegisterComponent; use bevy_render::{render_graph::RenderGraph, shader}; use legion::prelude::IntoSystem; +use light::Light; use material::StandardMaterial; /// NOTE: this isn't PBR yet. consider this name "aspirational" :) @@ -19,10 +21,12 @@ pub struct PbrPlugin; impl AppPlugin for PbrPlugin { fn build(&self, app: &mut AppBuilder) { - app.add_asset::().add_system_to_stage( - stage::POST_UPDATE, - shader::asset_shader_def_system::.system(), - ); + app.add_asset::() + .register_component::() + .add_system_to_stage( + stage::POST_UPDATE, + shader::asset_shader_def_system::.system(), + ); let resources = app.resources(); let mut render_graph = resources.get_mut::().unwrap(); render_graph.add_pbr_graph(resources); diff --git a/crates/bevy_pbr/src/light.rs b/crates/bevy_pbr/src/light.rs index 651089c9c8..2574257725 100644 --- a/crates/bevy_pbr/src/light.rs +++ b/crates/bevy_pbr/src/light.rs @@ -1,9 +1,11 @@ use bevy_render::{Color, PerspectiveCamera}; use bevy_transform::components::Translation; +use bevy_property::Properties; use glam::Mat4; use std::ops::Range; use zerocopy::{AsBytes, FromBytes}; +#[derive(Properties)] pub struct Light { pub color: Color, pub fov: f32, diff --git a/crates/bevy_property/src/impl_property_std.rs b/crates/bevy_property/src/impl_property_std.rs index df6e45565d..ef2245903a 100644 --- a/crates/bevy_property/src/impl_property_std.rs +++ b/crates/bevy_property/src/impl_property_std.rs @@ -3,7 +3,7 @@ use serde::Serialize; use std::{ any::Any, collections::{BTreeMap, HashMap, HashSet, VecDeque}, - hash::Hash, + hash::Hash, ops::Range, }; impl_property!(String); @@ -17,6 +17,7 @@ impl_property!(HashMap where impl_property!(BTreeMap where K: Clone + Ord + Send + Sync + Serialize + 'static, V: Clone + Send + Sync + Serialize + 'static); +impl_property!(Range where T: Clone + Send + Sync + Serialize + 'static); impl Property for usize { #[inline] diff --git a/crates/bevy_render/src/color.rs b/crates/bevy_render/src/color.rs index 4f180f6842..048cd569d6 100644 --- a/crates/bevy_render/src/color.rs +++ b/crates/bevy_render/src/color.rs @@ -2,12 +2,14 @@ use super::texture::Texture; use crate::shader::ShaderDefSuffixProvider; use bevy_asset::Handle; use bevy_core::bytes::GetBytes; +use serde::{Serialize, Deserialize}; +use bevy_property::Property; use glam::Vec4; use std::ops::{Add, AddAssign}; use zerocopy::AsBytes; #[repr(C)] -#[derive(Debug, Clone, Copy, PartialEq, AsBytes)] +#[derive(Debug, Clone, Copy, PartialEq, AsBytes, Serialize, Deserialize, Property)] pub struct Color { pub r: f32, pub g: f32,