aboutsummaryrefslogtreecommitdiff
path: root/src/helper.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-02-15 13:21:25 +0100
committermetamuffin <metamuffin@disroot.org>2025-02-15 13:21:25 +0100
commit2f4a11ddda04604d5d756231d258ef60fa9f7bd8 (patch)
tree891c99da0038eb513ed6de4c8a892d3f421d9b92 /src/helper.rs
parentd116a1df8fe14edc8de157bf8088244261fca30f (diff)
downloadunity-tools-2f4a11ddda04604d5d756231d258ef60fa9f7bd8.tar
unity-tools-2f4a11ddda04604d5d756231d258ef60fa9f7bd8.tar.bz2
unity-tools-2f4a11ddda04604d5d756231d258ef60fa9f7bd8.tar.zst
can read objects
Diffstat (limited to 'src/helper.rs')
-rw-r--r--src/helper.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/helper.rs b/src/helper.rs
index cb52b8c..a65d3e8 100644
--- a/src/helper.rs
+++ b/src/helper.rs
@@ -28,6 +28,12 @@ pub trait ReadExt {
fn read_i64_le(&mut self) -> Result<i64>;
fn read_u128_be(&mut self) -> Result<u128>;
fn read_cstr(&mut self) -> Result<String>;
+ fn read_f32(&mut self, e: Endianness) -> Result<f32>;
+ fn read_f32_be(&mut self) -> Result<f32>;
+ fn read_f32_le(&mut self) -> Result<f32>;
+ fn read_f64(&mut self, e: Endianness) -> Result<f64>;
+ fn read_f64_be(&mut self) -> Result<f64>;
+ fn read_f64_le(&mut self) -> Result<f64>;
}
impl<T: Read> ReadExt for T {
@@ -132,6 +138,38 @@ impl<T: Read> ReadExt for T {
self.read_exact(&mut buf)?;
Ok(i64::from_le_bytes(buf))
}
+ fn read_f32(&mut self, e: Endianness) -> Result<f32> {
+ match e {
+ Endianness::Big => self.read_f32_be(),
+ Endianness::Little => self.read_f32_le(),
+ }
+ }
+ fn read_f32_be(&mut self) -> Result<f32> {
+ let mut buf = [0; 4];
+ self.read_exact(&mut buf)?;
+ Ok(f32::from_be_bytes(buf))
+ }
+ fn read_f32_le(&mut self) -> Result<f32> {
+ let mut buf = [0; 4];
+ self.read_exact(&mut buf)?;
+ Ok(f32::from_le_bytes(buf))
+ }
+ fn read_f64(&mut self, e: Endianness) -> Result<f64> {
+ match e {
+ Endianness::Big => self.read_f64_be(),
+ Endianness::Little => self.read_f64_le(),
+ }
+ }
+ fn read_f64_be(&mut self) -> Result<f64> {
+ let mut buf = [0; 8];
+ self.read_exact(&mut buf)?;
+ Ok(f64::from_be_bytes(buf))
+ }
+ fn read_f64_le(&mut self) -> Result<f64> {
+ let mut buf = [0; 8];
+ self.read_exact(&mut buf)?;
+ Ok(f64::from_le_bytes(buf))
+ }
fn read_u128_be(&mut self) -> Result<u128> {
let mut buf = [0; 16];
self.read_exact(&mut buf)?;