Add anchor data
This commit is contained in:
parent
9c3c92f39a
commit
7f0f2d0515
@ -89,6 +89,7 @@ fn setup(world: &mut World) {
|
|||||||
vec![(Rect {
|
vec![(Rect {
|
||||||
position: math::vec2(75.0, 75.0),
|
position: math::vec2(75.0, 75.0),
|
||||||
dimensions: math::vec2(100.0, 100.0),
|
dimensions: math::vec2(100.0, 100.0),
|
||||||
|
anchors: Anchors::new(0.5, 0.5, 0.5, 0.5),
|
||||||
color: math::vec4(0.0, 1.0, 0.0, 1.0),
|
color: math::vec4(0.0, 1.0, 0.0, 1.0),
|
||||||
},)],
|
},)],
|
||||||
);
|
);
|
||||||
@ -98,6 +99,7 @@ fn setup(world: &mut World) {
|
|||||||
vec![(Rect {
|
vec![(Rect {
|
||||||
position: math::vec2(50.0, 50.0),
|
position: math::vec2(50.0, 50.0),
|
||||||
dimensions: math::vec2(100.0, 100.0),
|
dimensions: math::vec2(100.0, 100.0),
|
||||||
|
anchors: Anchors::new(0.5, 0.5, 0.5, 0.5),
|
||||||
color: math::vec4(1.0, 0.0, 0.0, 1.0),
|
color: math::vec4(1.0, 0.0, 0.0, 1.0),
|
||||||
},)],
|
},)],
|
||||||
);
|
);
|
||||||
@ -107,6 +109,7 @@ fn setup(world: &mut World) {
|
|||||||
vec![(Rect {
|
vec![(Rect {
|
||||||
position: math::vec2(100.0, 100.0),
|
position: math::vec2(100.0, 100.0),
|
||||||
dimensions: math::vec2(100.0, 100.0),
|
dimensions: math::vec2(100.0, 100.0),
|
||||||
|
anchors: Anchors::new(0.5, 0.5, 0.5, 0.5),
|
||||||
color: math::vec4(0.0, 0.0, 1.0, 1.0),
|
color: math::vec4(0.0, 0.0, 1.0, 1.0),
|
||||||
},)],
|
},)],
|
||||||
);
|
);
|
||||||
|
@ -13,6 +13,7 @@ use zerocopy::{AsBytes, FromBytes};
|
|||||||
pub struct RectData {
|
pub struct RectData {
|
||||||
pub position: [f32; 2],
|
pub position: [f32; 2],
|
||||||
pub dimensions: [f32; 2],
|
pub dimensions: [f32; 2],
|
||||||
|
pub anchors: [f32; 4],
|
||||||
pub color: [f32; 4],
|
pub color: [f32; 4],
|
||||||
pub z_index: f32,
|
pub z_index: f32,
|
||||||
}
|
}
|
||||||
@ -54,6 +55,7 @@ impl UiPipeline {
|
|||||||
position: rect.position.into(),
|
position: rect.position.into(),
|
||||||
dimensions: rect.dimensions.into(),
|
dimensions: rect.dimensions.into(),
|
||||||
color: rect.color.into(),
|
color: rect.color.into(),
|
||||||
|
anchors: [rect.anchors.top, rect.anchors.bottom, rect.anchors.left, rect.anchors.right],
|
||||||
z_index: z,
|
z_index: z,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -152,10 +154,15 @@ impl Pipeline for UiPipeline {
|
|||||||
shader_location: 4,
|
shader_location: 4,
|
||||||
},
|
},
|
||||||
wgpu::VertexAttributeDescriptor {
|
wgpu::VertexAttributeDescriptor {
|
||||||
format: wgpu::VertexFormat::Float,
|
format: wgpu::VertexFormat::Float4,
|
||||||
offset: 8 * 4,
|
offset: 8 * 4,
|
||||||
shader_location: 5,
|
shader_location: 5,
|
||||||
},
|
},
|
||||||
|
wgpu::VertexAttributeDescriptor {
|
||||||
|
format: wgpu::VertexFormat::Float,
|
||||||
|
offset: 12 * 4,
|
||||||
|
shader_location: 6,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -7,8 +7,9 @@ layout(location = 1) in vec4 a_Normal;
|
|||||||
// instanced attributes (RectData)
|
// instanced attributes (RectData)
|
||||||
layout (location = 2) in vec2 a_RectPosition;
|
layout (location = 2) in vec2 a_RectPosition;
|
||||||
layout (location = 3) in vec2 a_RectDimensions;
|
layout (location = 3) in vec2 a_RectDimensions;
|
||||||
layout (location = 4) in vec4 a_RectColor;
|
layout (location = 4) in vec4 a_RectAnchors;
|
||||||
layout (location = 5) in float a_RectZIndex;
|
layout (location = 5) in vec4 a_RectColor;
|
||||||
|
layout (location = 6) in float a_RectZIndex;
|
||||||
|
|
||||||
layout(location = 0) out vec4 v_Color;
|
layout(location = 0) out vec4 v_Color;
|
||||||
|
|
||||||
|
@ -1,16 +1,48 @@
|
|||||||
use crate::math::{Vec2, Vec4};
|
use crate::math::{Vec2, Vec4};
|
||||||
|
|
||||||
|
pub struct Anchors {
|
||||||
|
pub top: f32,
|
||||||
|
pub bottom: f32,
|
||||||
|
pub left: f32,
|
||||||
|
pub right: f32,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Anchors {
|
||||||
|
pub fn new(top: f32, bottom: f32, left: f32, right: f32) -> Self {
|
||||||
|
Anchors {
|
||||||
|
top,
|
||||||
|
bottom,
|
||||||
|
left,
|
||||||
|
right
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for Anchors {
|
||||||
|
fn default() -> Self {
|
||||||
|
Anchors {
|
||||||
|
top: 0.5,
|
||||||
|
bottom: 0.5,
|
||||||
|
left: 0.5,
|
||||||
|
right: 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Rect {
|
pub struct Rect {
|
||||||
pub position: Vec2,
|
pub position: Vec2,
|
||||||
pub dimensions: Vec2,
|
pub dimensions: Vec2,
|
||||||
|
pub anchors: Anchors,
|
||||||
pub color: Vec4,
|
pub color: Vec4,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Rect {
|
impl Rect {
|
||||||
pub fn new(position: Vec2, dimensions: Vec2, color: Vec4) -> Self {
|
pub fn new(position: Vec2, dimensions: Vec2, anchors: Anchors, color: Vec4) -> Self {
|
||||||
Rect {
|
Rect {
|
||||||
position,
|
position,
|
||||||
dimensions,
|
dimensions,
|
||||||
|
anchors,
|
||||||
color,
|
color,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user