(&self, data: &SceneNodeData, out: &mut String, depth: usize)
| 222 | out.push_str("[/"); |
| 223 | out.push_str(node_key.as_ref()); |
| 224 | out.push_str("]\n"); |
| 225 | } |
| 226 | } |
| 227 | |
| 228 | fn write_data(&self, data: &SceneNodeData, out: &mut String, depth: usize) { |
| 229 | indent(out, depth); |
| 230 | out.push('['); |
| 231 | out.push_str(data.type_name()); |
| 232 | let fields = data |
| 233 | .fields |
| 234 | .iter() |
| 235 | .filter(|(name, value)| !scene_field_matches_default(data, name, value)) |
| 236 | .collect::<Vec<_>>(); |
| 237 | if data.base_ref().is_none() && fields.is_empty() { |
| 238 | out.push_str("/]\n"); |
| 239 | return; |
| 240 | } |
| 241 | out.push_str("]\n"); |
| 242 | for (name, value) in fields { |
| 243 | indent(out, depth + 1); |
| 244 | out.push_str(name.as_ref()); |
| 245 | out.push_str(" = "); |
| 246 | self.write_field_value(name.as_ref(), value, out, depth + 1); |
| 247 | out.push('\n'); |
| 248 | } |
| 249 | if let Some(base) = data.base_ref() { |
| 250 | self.write_data(base, out, depth + 1); |
| 251 | } |
| 252 | indent(out, depth); |
| 253 | out.push_str("[/"); |
| 254 | out.push_str(data.type_name()); |
| 255 | out.push_str("]\n"); |
no test coverage detected