Parsing models implemented

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

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

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

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

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

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

Loading…
Cancel
Save