private static MyCompoundBlockTemplateDefinition.MyCompoundBlockRotationBinding GetRotationBinding(MyCompoundBlockTemplateDefinition templateDefinition, MyCubeBlockDefinition blockDefinition1, MyCubeBlockDefinition blockDefinition2) { MyCompoundBlockTemplateDefinition.MyCompoundBlockBinding binding = GetTemplateDefinitionBinding(templateDefinition, blockDefinition1); if (binding == null) return null; MyCompoundBlockTemplateDefinition.MyCompoundBlockRotationBinding rotBind = GetRotationBinding(binding, blockDefinition2); if (rotBind != null) return rotBind; binding = GetTemplateDefinitionBinding(templateDefinition, blockDefinition2); if (binding == null) return null; rotBind = GetRotationBinding(binding, blockDefinition1); return rotBind; }
private static MyCompoundBlockTemplateDefinition.MyCompoundBlockRotationBinding GetRotationBinding(MyCompoundBlockTemplateDefinition.MyCompoundBlockBinding binding, MyCubeBlockDefinition blockDefinition) { if (binding.RotationBinds != null) { foreach (var rotBind in binding.RotationBinds) { if (rotBind.BuildTypeReference == blockDefinition.BuildType) return rotBind; } } return null; }
private static MyCompoundBlockTemplateDefinition.MyCompoundBlockBinding GetTemplateDefinitionBinding(MyCompoundBlockTemplateDefinition templateDefinition, MyCubeBlockDefinition blockDefinition) { // first try any build type (allows more freedom) foreach (var binding in templateDefinition.Bindings) { if (binding.BuildType == BUILD_TYPE_ANY) return binding; } foreach (var binding in templateDefinition.Bindings) { if (binding.BuildType == blockDefinition.BuildType && blockDefinition.BuildType != null) return binding; } return null; }