Parsing models implemented

attempt/001
Elijah Voigt 1 year ago
parent 3f3d7ef001
commit 5724e670b7

@ -1 +1,2 @@
00/camera.entity
00/van.entity

@ -1,2 +1,2 @@
camera
; transform translation 2.0 2.0 2.0 ...
transform translation 2.0 2.0 2.0 ...

@ -1,3 +1,3 @@
# spatial3d
# transform ...
# model "models/van.glb"
transform ...
visible
model "models/van.glb" "Scene"

@ -37,6 +37,7 @@ fn main() {
parse_save_camera,
parse_save_visibility,
parse_save_transform,
parse_save_model,
],
})
.run();

@ -117,7 +117,7 @@ fn test_tokenize() {
pub(crate) fn parse_save_transform(
tokens: &Vec<Token>,
) -> Result<Vec<Box<dyn Reflect>>, SaveEntityParseError> {
if tokens[0] == Token::Tag("transform".into()) {
if tokens.get(0) == Some(&Token::Tag("transform".into())) {
let mut t = Transform::default();
let mut idx = 1;
while idx < tokens.len() {
@ -320,16 +320,24 @@ impl Component for SaveModel {
///
pub(crate) fn parse_save_model(
tokens: &Vec<Token>,
) -> Result<Box<dyn Reflect>, SaveEntityParseError> {
todo!("parse_save_model");
/*
Ok(SaveModel {
gltf_file: gltf_path.into(),
scene_name: scene_name.into(),
) -> Result<Vec<Box<dyn Reflect>>, SaveEntityParseError> {
if tokens.get(0) == Some(&Token::Tag("model".into())) {
if let Token::Str(gltf_file) = tokens.get(1).expect("model requires gltf file") {
if let Token::Str(scene_name) = tokens.get(2).expect("model requires scene name") {
Ok(vec![SaveModel {
gltf_file: gltf_file.into(),
scene_name: scene_name.clone(),
}
.clone_value()])
} else {
Err(SaveEntityParseError::Component("Model".into()))
}
} else {
Err(SaveEntityParseError::Component("Model".into()))
}
} else {
Err(SaveEntityParseError::Component("Model".into()))
}
.clone_value())
*/
}
#[test]
@ -337,15 +345,14 @@ fn test_parse_model() {
let line = "model \"models/foo.glb\" \"My Scene\"";
let tokens = tokenize(line);
let parsed = parse_save_model(&tokens).unwrap();
let expected = SaveModel {
let expected = vec![SaveModel {
gltf_file: "models/foo.glb".into(),
scene_name: "My Scene".into(),
};
}];
assert!(expected
.clone_value()
.reflect_partial_eq(parsed.as_reflect())
.unwrap());
parsed.iter().zip(expected).for_each(|(p, e)| {
assert!(e.clone_value().reflect_partial_eq(p.as_reflect()).unwrap());
});
}
#[derive(Component, Debug, Default, PartialEq, Reflect, Clone)]

Loading…
Cancel
Save