pub struct Object {Show 21 fields
pub name: Arc<str>,
pub vertices: Vec<Vertex>,
pub indices: Vec<u16>,
pub uniform_layout: BindGroupLayout,
pub pipeline: Pipeline,
pub instances: Vec<Instance>,
pub instance_buffer: Buffer,
pub size: Vec3,
pub position: Vec3,
pub rotation: Vec3,
pub translation_matrix: Mat4,
pub scale_matrix: Mat4,
pub rotation_quaternion: Quat,
pub inverse_transformation_matrix: Mat4,
pub color: Vec4,
pub shader_builder: ShaderBuilder,
pub shader_settings: ShaderSettings,
pub camera_effect: Option<Arc<str>>,
pub uniform_buffers: Vec<Buffer>,
pub is_visible: bool,
pub render_order: usize,
/* private fields */
}Expand description
Objects make it easier to work with Blue Engine, it automates most of work needed for creating 3D objects and showing them on screen. A range of default objects are available as well as ability to customize each of them and even create your own! You can also customize almost everything there is about them!
Fields§
§name: Arc<str>Give your object a name, which can help later on for debugging.
vertices: Vec<Vertex>A list of Vertex
indices: Vec<u16>A list of indices that dictates the order that vertices appear
uniform_layout: BindGroupLayoutDescribes how to uniform buffer is structures
pipeline: PipelinePipeline holds all the data that is sent to GPU, including shaders and textures
instances: Vec<Instance>List of instances of this object
instance_buffer: Bufferinstance buffer
size: Vec3Dictates the size of your object in relation to the world
position: Vec3Dictates the position of your object in pixels
rotation: Vec3Dictates the rotation of your object
translation_matrix: Mat4Transformation matrices helps to apply changes to your object, including position, orientation, … Best choice is to let the Object system handle it
scale_matrix: Mat4Transformation matrices helps to apply changes to your object, including position, orientation, … Best choice is to let the Object system handle it
rotation_quaternion: QuatTransformation matrices helps to apply changes to your object, including position, orientation, … Best choice is to let the Object system handle it
inverse_transformation_matrix: Mat4Transformation matrix, but inversed
color: Vec4The main color of your object
shader_builder: ShaderBuilderA struct making it easier to manipulate specific parts of shader
shader_settings: ShaderSettingsShader settings
camera_effect: Option<Arc<str>>Camera have any effect on the object?
uniform_buffers: Vec<Buffer>Uniform Buffers to be sent to GPU. These are raw and not compiled for GPU yet
is_visible: boolShould be rendered or not
render_order: usizeObjects with higher number get rendered later and appear “on top” when occupying the same space
Implementations§
Source§impl Object
impl Object
Sourcepub fn set_scale(&mut self, scale: impl Into<Vec3>) -> &mut Object
pub fn set_scale(&mut self, scale: impl Into<Vec3>) -> &mut Object
Scales an object. e.g. 2.0 doubles the size and 0.5 halves
Sourcepub fn resize(&mut self, size: impl Into<Vec3>) -> &mut Object
pub fn resize(&mut self, size: impl Into<Vec3>) -> &mut Object
Resizes an object in pixels which are relative to the window
Sourcepub fn set_rotation(&mut self, rotation: impl Into<Vec3>) -> &mut Object
pub fn set_rotation(&mut self, rotation: impl Into<Vec3>) -> &mut Object
Sets the rotation of the object in the axis you specify
This function does NOT normalize the rotation.
Sourcepub fn rotate(&mut self, amount: RotateAmount, axis: RotateAxis) -> &mut Object
pub fn rotate(&mut self, amount: RotateAmount, axis: RotateAxis) -> &mut Object
Rotates the object in the axis you specify
Sourcepub fn set_translation(&mut self, new_pos: impl Into<Vec3>) -> &mut Object
👎Deprecated
pub fn set_translation(&mut self, new_pos: impl Into<Vec3>) -> &mut Object
Moves the object by the amount you specify in the axis you specify
Sourcepub fn translate(&mut self, new_pos: impl Into<Vec3>) -> &mut Object
pub fn translate(&mut self, new_pos: impl Into<Vec3>) -> &mut Object
Moves the object by the amount you specify in the axis you specify
Sourcepub fn set_position(&mut self, new_pos: impl Into<Vec3>) -> &mut Object
pub fn set_position(&mut self, new_pos: impl Into<Vec3>) -> &mut Object
Moves the object by the amount you specify in the axis you specify Sets the position of the object in 3D space relative to the window
Sourcepub fn set_color(
&mut self,
red: f32,
green: f32,
blue: f32,
alpha: f32,
) -> &mut Object
pub fn set_color( &mut self, red: f32, green: f32, blue: f32, alpha: f32, ) -> &mut Object
Changes the color of the object. If textures exist, the color of textures will change
Sourcepub fn set_render_order(&mut self, render_order: usize) -> &mut Object
pub fn set_render_order(&mut self, render_order: usize) -> &mut Object
Changes the render order of the Object.
Objects with higher number get rendered later and appear “on top” when occupying the same space
Sourcepub fn set_texture(
&mut self,
name: impl AsRef<str>,
texture_data: TextureData,
texture_mode: TextureMode,
renderer: &mut Renderer,
) -> Result<&mut Object, Error>
pub fn set_texture( &mut self, name: impl AsRef<str>, texture_data: TextureData, texture_mode: TextureMode, renderer: &mut Renderer, ) -> Result<&mut Object, Error>
Replaces the object’s texture with provided one
This function previously served the role of crate::Object::set_texture_raw
Sourcepub fn set_texture_raw(&mut self, texture: BindGroup) -> &mut Object
pub fn set_texture_raw(&mut self, texture: BindGroup) -> &mut Object
Replaces the object’s texture with provided one
Sourcepub fn flag_as_changed(&mut self, is_changed: bool)
pub fn flag_as_changed(&mut self, is_changed: bool)
This will flag object as changed and altered, leading to rebuilding parts, or entirety on next frame. Best used if you directly altered fields of the object. The functions normally flag the object as changed on every call anyways. But this function is to manually flag it yourself.
Sourcepub fn set_visibility(&mut self, is_visible: bool)
pub fn set_visibility(&mut self, is_visible: bool)
Sets if the object will be rendered or not
Sourcepub fn inverse_matrices(&mut self)
pub fn inverse_matrices(&mut self)
build an inverse of the transformation matrix to be sent to the gpu for lighting and other things.
Source§impl Object
impl Object
Sourcepub fn reference_vertices(&mut self, object_id: impl AsRef<str>) -> &mut Object
pub fn reference_vertices(&mut self, object_id: impl AsRef<str>) -> &mut Object
References another object’s vertices
Sourcepub fn reference_shader(&mut self, object_id: impl AsRef<str>) -> &mut Object
pub fn reference_shader(&mut self, object_id: impl AsRef<str>) -> &mut Object
References another object’s shader
Sourcepub fn reference_texture(&mut self, object_id: impl AsRef<str>) -> &mut Object
pub fn reference_texture(&mut self, object_id: impl AsRef<str>) -> &mut Object
References another object’s texture
Sourcepub fn reference_uniform_buffer(
&mut self,
object_id: impl AsRef<str>,
) -> &mut Object
pub fn reference_uniform_buffer( &mut self, object_id: impl AsRef<str>, ) -> &mut Object
References another object’s uniform buffer
Sourcepub fn add_instance(&mut self, instance: Instance) -> &mut Object
pub fn add_instance(&mut self, instance: Instance) -> &mut Object
Add an instance to the object
Source§impl Object
impl Object
Sourcepub fn update_and_return(
&mut self,
renderer: &mut Renderer,
) -> (VertexBuffers, BindGroup, RenderPipeline)
pub fn update_and_return( &mut self, renderer: &mut Renderer, ) -> (VertexBuffers, BindGroup, RenderPipeline)
Update and apply changes done to an object and returns a pipeline
Sourcepub fn update_vertex_buffer(&mut self, renderer: &mut Renderer)
pub fn update_vertex_buffer(&mut self, renderer: &mut Renderer)
Update and apply changes done to the vertex buffer
Sourcepub fn update_vertex_buffer_and_return(
&mut self,
renderer: &mut Renderer,
) -> VertexBuffers
pub fn update_vertex_buffer_and_return( &mut self, renderer: &mut Renderer, ) -> VertexBuffers
Returns the buffer with ownership
Sourcepub fn update_shader(&mut self, renderer: &mut Renderer)
pub fn update_shader(&mut self, renderer: &mut Renderer)
Update and apply changes done to the shader
Sourcepub fn update_shader_and_return(
&mut self,
renderer: &mut Renderer,
) -> RenderPipeline
pub fn update_shader_and_return( &mut self, renderer: &mut Renderer, ) -> RenderPipeline
Returns the buffer with ownership
Sourcepub fn update_uniform_buffer(&mut self, renderer: &mut Renderer)
pub fn update_uniform_buffer(&mut self, renderer: &mut Renderer)
Update and apply changes done to the uniform buffer
Sourcepub fn update_uniform_buffer_and_return(
&mut self,
renderer: &mut Renderer,
) -> BindGroup
pub fn update_uniform_buffer_and_return( &mut self, renderer: &mut Renderer, ) -> BindGroup
Update and apply changes done to the uniform buffer and returns it
Sourcepub fn update_instance_buffer(&mut self, renderer: &mut Renderer)
pub fn update_instance_buffer(&mut self, renderer: &mut Renderer)
Updates the instance buffer
Sourcepub fn update_instance_buffer_and_return(
&mut self,
renderer: &mut Renderer,
) -> Buffer
pub fn update_instance_buffer_and_return( &mut self, renderer: &mut Renderer, ) -> Buffer
Returns the buffer with ownership
Source§impl Object
impl Object
Sourcepub fn new(
name: impl AsRef<str>,
vertices: Vec<Vertex>,
indices: Vec<u16>,
settings: ObjectSettings,
renderer: &mut Renderer,
) -> Result<Object, Error>
pub fn new( name: impl AsRef<str>, vertices: Vec<Vertex>, indices: Vec<u16>, settings: ObjectSettings, renderer: &mut Renderer, ) -> Result<Object, Error>
Creates a new object
Is used to define a new object and add it to the storage. This offers full customizability and a framework for in-engine shapes to be developed.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Object
impl !RefUnwindSafe for Object
impl Unpin for Object
impl !UnwindSafe for Object
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more