Struct Object

Source
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: Quat, pub position_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: BindGroupLayout

Describes how to uniform buffer is structures

§pipeline: Pipeline

Pipeline holds all the data that is sent to GPU, including shaders and textures

§instances: Vec<Instance>

List of instances of this object

§instance_buffer: Buffer

instance buffer

§size: Vec3

Dictates the size of your object in relation to the world

§position: Vec3

Dictates the position of your object in pixels

§rotation: Quat

Dictates the rotation of your object

§position_matrix: Mat4

Transformation matrices helps to apply changes to your object, including position, orientation, … Best choice is to let the Object system handle it

§scale_matrix: Mat4

Transformation matrices helps to apply changes to your object, including position, orientation, … Best choice is to let the Object system handle it

§rotation_quaternion: Quat

Transformation matrices helps to apply changes to your object, including position, orientation, … Best choice is to let the Object system handle it

§inverse_transformation_matrix: Mat4

Transformation matrix, but inversed

§color: Vec4

The main color of your object

§shader_builder: ShaderBuilder

A struct making it easier to manipulate specific parts of shader

§shader_settings: ShaderSettings

Shader 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: bool

Should be rendered or not

§render_order: usize

Objects with higher number get rendered later and appear “on top” when occupying the same space

Implementations§

Source§

impl Object

Source

pub fn set_name(&mut self, name: impl StringBuffer) -> &mut Object

Sets the name of the object

Source

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

Source

pub fn resize( &mut self, width: f32, height: f32, depth: f32, window_size: PhysicalSize<u32>, ) -> &mut Object

Resizes an object in pixels which are relative to the window

Source

pub fn set_rotation(&mut self, rotation: Vec3) -> &mut Object

Sets the rotation of the object in the axis you specify

This function does NOT normalize the rotation.

Source

pub fn rotate(&mut self, amount: RotateAmount, axis: RotateAxis) -> &mut Object

Rotates the object in the axis you specify

Source

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

Source

pub fn set_position(&mut self, new_pos: impl Into<Vec3>) -> &mut Object

Sets the position of the object in 3D space relative to the window

Source

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

Source

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

Source

pub fn set_texture(&mut self, texture: BindGroup) -> &mut Object

Replaces the object’s texture with provided one

Source

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.

Source

pub fn set_visibility(&mut self, is_visible: bool)

Sets if the object will be rendered or not

Source

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

pub fn update(&mut self, renderer: &mut Renderer)

Update and apply changes done to an object

Source

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

Source

pub fn update_vertex_buffer(&mut self, renderer: &mut Renderer)

Update and apply changes done to the vertex buffer

Source

pub fn update_vertex_buffer_and_return( &mut self, renderer: &mut Renderer, ) -> VertexBuffers

Returns the buffer with ownership

Source

pub fn update_shader(&mut self, renderer: &mut Renderer)

Update and apply changes done to the shader

Source

pub fn update_shader_and_return( &mut self, renderer: &mut Renderer, ) -> RenderPipeline

Returns the buffer with ownership

Source

pub fn update_uniform_buffer(&mut self, renderer: &mut Renderer)

Update and apply changes done to the uniform buffer

Source

pub fn update_uniform_buffer_and_return( &mut self, renderer: &mut Renderer, ) -> BindGroup

Returns the buffer with ownership

Source

pub fn update_instance_buffer(&mut self, renderer: &mut Renderer)

Updates the instance buffer

Source

pub fn update_instance_buffer_and_return( &mut self, renderer: &mut Renderer, ) -> Buffer

Returns the buffer with ownership

Source

pub fn reference_vertices( &mut self, object_id: impl StringBuffer, ) -> &mut Object

References another object’s vertices

Source

pub fn reference_shader(&mut self, object_id: impl StringBuffer) -> &mut Object

References another object’s shader

Source

pub fn reference_texture(&mut self, object_id: impl StringBuffer) -> &mut Object

References another object’s texture

Source

pub fn reference_uniform_buffer( &mut self, object_id: impl StringBuffer, ) -> &mut Object

References another object’s uniform buffer

Source

pub fn add_instance(&mut self, instance: Instance) -> &mut Object

Add an instance to the object

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,