aboutsummaryrefslogtreecommitdiff
path: root/src/classes/mesh.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/classes/mesh.rs')
-rw-r--r--src/classes/mesh.rs34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/classes/mesh.rs b/src/classes/mesh.rs
index 328af97..b6e6821 100644
--- a/src/classes/mesh.rs
+++ b/src/classes/mesh.rs
@@ -44,7 +44,7 @@ pub struct ChannelInfo {
impl FromValue for Mesh {
fn from_value(v: Value) -> Result<Self> {
- let mut fields = v.as_class("Mesh").unwrap();
+ let mut fields = v.as_class("Mesh")?;
Ok(Mesh {
name: fields.field("m_Name")?,
index_format: fields.field("m_IndexFormat")?,
@@ -105,10 +105,14 @@ impl Mesh {
impl FromValue for VertexData {
fn from_value(v: Value) -> Result<Self> {
- let mut fields = v.as_class("VertexData").unwrap();
+ let mut fields = v.as_class("VertexData")?;
Ok(VertexData {
vertex_count: fields.field("m_VertexCount")?,
- data: fields.remove("m_DataSize").unwrap().as_typeless().unwrap(),
+ data: fields
+ .remove("m_DataSize")
+ .ok_or(anyhow!("m_DataSize missing"))?
+ .as_typeless()
+ .ok_or(anyhow!("m_DataSize is not typeless"))?,
channels: fields
.remove("m_Channels")
.unwrap()
@@ -168,26 +172,26 @@ impl VertexData {
impl FromValue for ChannelInfo {
fn from_value(v: Value) -> Result<Self> {
- let mut fields = v.as_class("ChannelInfo").unwrap();
+ let mut fields = v.as_class("ChannelInfo")?;
Ok(ChannelInfo {
- dimension: fields.remove("dimension").unwrap().parse().unwrap(),
- format: fields.remove("format").unwrap().parse().unwrap(),
- offset: fields.remove("offset").unwrap().parse().unwrap(),
- stream: fields.remove("stream").unwrap().parse().unwrap(),
+ dimension: fields.field("dimension")?,
+ format: fields.field("format")?,
+ offset: fields.field("offset")?,
+ stream: fields.field("stream")?,
})
}
}
impl FromValue for SubMesh {
fn from_value(v: Value) -> Result<Self> {
- let mut fields = v.as_class("SubMesh").unwrap();
+ let mut fields = v.as_class("SubMesh")?;
Ok(SubMesh {
- topology: fields.remove("topology").unwrap().parse().unwrap(),
- vertex_count: fields.remove("vertexCount").unwrap().parse().unwrap(),
- base_vertex: fields.remove("baseVertex").unwrap().parse().unwrap(),
- first_byte: fields.remove("firstByte").unwrap().parse().unwrap(),
- first_vertex: fields.remove("firstVertex").unwrap().parse().unwrap(),
- index_count: fields.remove("indexCount").unwrap().parse().unwrap(),
+ topology: fields.field("topology")?,
+ vertex_count: fields.field("vertexCount")?,
+ base_vertex: fields.field("baseVertex")?,
+ first_byte: fields.field("firstByte")?,
+ first_vertex: fields.field("firstVertex")?,
+ index_count: fields.field("indexCount")?,
})
}
}