schematic_mesher/resolver/
mod.rs1pub mod state_resolver;
7pub mod model_resolver;
8pub mod multipart;
9
10pub use state_resolver::StateResolver;
11pub use model_resolver::ModelResolver;
12
13use crate::resource_pack::{BlockModel, BlockstateDefinition, ModelVariant, ResourcePack};
14use crate::types::InputBlock;
15use crate::error::Result;
16
17#[derive(Debug, Clone)]
19pub struct ResolvedModel {
20 pub model: BlockModel,
22 pub transform: crate::types::BlockTransform,
24}
25
26pub fn resolve_block(
28 pack: &ResourcePack,
29 block: &InputBlock,
30) -> Result<Vec<ResolvedModel>> {
31 let state_resolver = StateResolver::new(pack);
32 let model_resolver = ModelResolver::new(pack);
33
34 let variants = state_resolver.resolve(block)?;
36
37 let mut resolved = Vec::new();
39 for variant in variants {
40 let model = model_resolver.resolve(&variant.model)?;
41 resolved.push(ResolvedModel {
42 model,
43 transform: crate::types::BlockTransform::new(
44 variant.x,
45 variant.y,
46 variant.uvlock,
47 ),
48 });
49 }
50
51 Ok(resolved)
52}