protected override void DeserializeBrickTubeModel(BrickTubeModel brickTubeModel, XElement element) { DeserializePartCullingModel(brickTubeModel, element); //LEGACY if (element.HasElement(StudReference.NODE_NAME, out XElement tubeStudElem)) { var studRef = StudReference.FromXml(tubeStudElem); if (!string.IsNullOrEmpty(brickTubeModel.LegacyConnectionID)) { studRef.ConnectionID = brickTubeModel.LegacyConnectionID; } brickTubeModel.ReferencedStuds.Add(studRef); //TubeStud = StudReference.FromXml(tubeStudElem); //if (!string.IsNullOrEmpty(LegacyConnectionID)) // TubeStud.ConnectionID = LegacyConnectionID; } brickTubeModel.TubeStud = brickTubeModel.ReferencedStuds.FirstOrDefault(); brickTubeModel.AdjacentStuds.Clear(); if (element.HasElement(nameof(BrickTubeModel.AdjacentStuds), out XElement adjStudsElem)) { foreach (var adjStudElem in adjStudsElem.Elements(StudReference.NODE_NAME)) { var studRef = StudReference.FromXml(adjStudElem); if (!string.IsNullOrEmpty(brickTubeModel.LegacyConnectionID)) { studRef.ConnectionID = brickTubeModel.LegacyConnectionID; } brickTubeModel.AdjacentStuds.Add(studRef); } } }
public override SurfaceComponent DeserializeSurfaceComponent(XElement element) { SurfaceComponent component = null; var componentType = element.ReadAttribute <ModelComponentType>("Type"); switch (componentType) { case ModelComponentType.Part: component = new PartModel(); DeserializePartModel(component as PartModel, element); break; case ModelComponentType.MaleStud: component = new MaleStudModel(); DeserializeMaleStudModel(component as MaleStudModel, element); break; case ModelComponentType.FemaleStud: component = new FemaleStudModel(); DeserializeFemaleStudModel(component as FemaleStudModel, element); break; case ModelComponentType.BrickTube: component = new BrickTubeModel(); DeserializeBrickTubeModel(component as BrickTubeModel, element); break; } if (element.HasElement(nameof(SurfaceComponent.Meshes), out XElement geomElem)) { foreach (var elem in geomElem.Elements(ModelMeshReference.NODE_NAME)) { var mesh = new ModelMeshReference(); mesh.LoadFromXml(elem); component.Meshes.Add(mesh); } } return(component); }
protected abstract void DeserializeBrickTubeModel(BrickTubeModel brickTubeModel, XElement element);