@@ -55,35 +55,42 @@ pub enum MaterialValue {
5555
5656pub fn create_pbr (
5757 mut commands : Commands ,
58- mut materials : ResMut < Assets < StandardMaterial > > ,
58+ mut materials : ResMut < Assets < ExtendedMaterial < StandardMaterial , ProcessingMaterial > > > ,
5959) -> Entity {
60- let handle = materials. add ( StandardMaterial {
61- unlit : false ,
62- cull_mode : None ,
63- ..default ( )
60+ let handle = materials. add ( ExtendedMaterial {
61+ base : StandardMaterial {
62+ unlit : false ,
63+ cull_mode : None ,
64+ ..default ( )
65+ } ,
66+ extension : ProcessingMaterial {
67+ blend_state : None ,
68+ } ,
6469 } ) ;
6570 commands. spawn ( UntypedMaterial ( handle. untyped ( ) ) ) . id ( )
6671}
6772
6873pub fn set_property (
6974 In ( ( entity, name, value) ) : In < ( Entity , String , MaterialValue ) > ,
7075 material_handles : Query < & UntypedMaterial > ,
71- mut standard_materials : ResMut < Assets < StandardMaterial > > ,
76+ mut extended_materials : ResMut < Assets < ExtendedMaterial < StandardMaterial , ProcessingMaterial > > > ,
7277 mut custom_materials : ResMut < Assets < custom:: CustomMaterial > > ,
7378) -> error:: Result < ( ) > {
7479 let untyped = material_handles
7580 . get ( entity)
7681 . map_err ( |_| ProcessingError :: MaterialNotFound ) ?;
7782
78- // Try StandardMaterial
79- if let Ok ( handle) = untyped. 0 . clone ( ) . try_typed :: < StandardMaterial > ( ) {
80- let mut standard = standard_materials
83+ if let Ok ( handle) = untyped
84+ . 0
85+ . clone ( )
86+ . try_typed :: < ExtendedMaterial < StandardMaterial , ProcessingMaterial > > ( )
87+ {
88+ let mut extended = extended_materials
8189 . get_mut ( & handle)
8290 . ok_or ( ProcessingError :: MaterialNotFound ) ?;
83- return pbr:: set_property ( & mut standard , & name, & value) ;
91+ return pbr:: set_property ( & mut extended . base , & name, & value) ;
8492 }
8593
86- // Try CustomMaterial
8794 if let Ok ( handle) = untyped. 0 . clone ( ) . try_typed :: < custom:: CustomMaterial > ( ) {
8895 let mut mat = custom_materials
8996 . get_mut ( & handle)
@@ -98,14 +105,18 @@ pub fn destroy(
98105 In ( entity) : In < Entity > ,
99106 mut commands : Commands ,
100107 material_handles : Query < & UntypedMaterial > ,
101- mut standard_materials : ResMut < Assets < StandardMaterial > > ,
108+ mut extended_materials : ResMut < Assets < ExtendedMaterial < StandardMaterial , ProcessingMaterial > > > ,
102109 mut custom_materials : ResMut < Assets < custom:: CustomMaterial > > ,
103110) -> error:: Result < ( ) > {
104111 let untyped = material_handles
105112 . get ( entity)
106113 . map_err ( |_| ProcessingError :: MaterialNotFound ) ?;
107- if let Ok ( handle) = untyped. 0 . clone ( ) . try_typed :: < StandardMaterial > ( ) {
108- standard_materials. remove ( & handle) ;
114+ if let Ok ( handle) = untyped
115+ . 0
116+ . clone ( )
117+ . try_typed :: < ExtendedMaterial < StandardMaterial , ProcessingMaterial > > ( )
118+ {
119+ extended_materials. remove ( & handle) ;
109120 }
110121 if let Ok ( handle) = untyped. 0 . clone ( ) . try_typed :: < custom:: CustomMaterial > ( ) {
111122 custom_materials. remove ( & handle) ;
0 commit comments