Struct ssbh_lib::formats::adj::Adj

source ·
pub struct Adj {
    pub entries: Vec<AdjEntry>,
    pub index_buffer: Vec<i16>,
}
Expand description

Mesh adjacency data for model.adjb files.

Fields§

§entries: Vec<AdjEntry>

A collection containing an entry for each MeshObject with adjacency information in index_buffer

§index_buffer: Vec<i16>

A flattened list of adjacent vertex indices for entries

Each vertex for each MeshObject stores the indices for vertices from adjacent faces in the corresponding section of the buffer. The shared vertex for the adjacent face is not explicitly stored, so an adjacent triangle can be encoded as just two index values.

The section of adjacent vertices for each vertex is padded with the value -1. to ensure all vertices have an equal number of buffer elements. The shared vertex of each face is implied. For example, the vertex with index 0 is adjacent to the triangle face with vertex indices (0, 1, 2). This would be encoded in the buffer as [1, 2, -1, -1, ...].

Smash Ultimate uses 18 elements for each vertex. This allows for 9 adjacent triangle faces instead of 6 since we omit the shared vertex.

Implementations§

source§

impl Adj

source

pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, Box<dyn Error>>

Tries to read the type from path. The entire file is buffered for performance.

source

pub fn read<R: Read + Seek>(reader: &mut R) -> Result<Self, Box<dyn Error>>

Tries to read the type from reader. For best performance when opening from a file, use from_file instead.

source

pub fn write<W: Write + Seek>(&self, writer: &mut W) -> Result<()>

Tries to write the type to writer. For best performance when writing to a file, use write_to_file instead.

source

pub fn write_to_file<P: AsRef<Path>>(&self, path: P) -> Result<()>

Tries to write the type to path. The entire file is buffered for performance.

Trait Implementations§

source§

impl BinRead for Adj

§

type Args<'__binrw_generated_args_lifetime> = ()

The type used for the args parameter of read_args() and read_options(). Read more
source§

fn read_options<R: Read + Seek>( __binrw_generated_var_reader: &mut R, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_> ) -> BinResult<Self>

Read Self from the reader using the given Endian and arguments. Read more
source§

fn read_be<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming big-endian byte order. Read more
source§

fn read_le<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming little-endian byte order. Read more
source§

fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read T from the reader assuming native-endian byte order. Read more
source§

fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming big-endian byte order, using the given arguments. Read more
source§

fn read_le_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming little-endian byte order, using the given arguments. Read more
source§

fn read_ne_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read T from the reader, assuming native-endian byte order, using the given arguments. Read more
source§

impl Debug for Adj

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Adj

source§

fn eq(&self, other: &Adj) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl SsbhWrite for Adj

source§

fn ssbh_write<W: Write + Seek>( &self, writer: &mut W, data_ptr: &mut u64 ) -> Result<()>

Writes the byte representation of self to writer. data_ptr is assumed to be the absolute offset where the next data stored behind an offset will be written. Struct that contains no offsets as fields can skip updating data_ptr. Read more
source§

fn write<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek,

Writes the byte representation of self to writer. This is a convenience method for ssbh_write that handles initializing the data pointer.
source§

fn size_in_bytes(&self) -> u64

The offset in bytes between successive elements in an array of this type. This should include any alignment or padding.
source§

fn alignment_in_bytes() -> u64

The alignment for pointers of this type, which is useful for offset calculations.
source§

impl Eq for Adj

source§

impl StructuralPartialEq for Adj

Auto Trait Implementations§

§

impl RefUnwindSafe for Adj

§

impl Send for Adj

§

impl Sync for Adj

§

impl Unpin for Adj

§

impl UnwindSafe for Adj

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> 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.