void Constraint::Restore(XMLReader &reader) { reader.readElement("Constrain"); Name = reader.getAttribute("Name"); Type = (ConstraintType) reader.getAttributeAsInteger("Type"); Value = reader.getAttributeAsFloat("Value"); First = reader.getAttributeAsInteger("First"); FirstPos = (PointPos) reader.getAttributeAsInteger("FirstPos"); Second = reader.getAttributeAsInteger("Second"); SecondPos = (PointPos) reader.getAttributeAsInteger("SecondPos"); if(this->Type==InternalAlignment) { AlignmentType = (InternalAlignmentType) reader.getAttributeAsInteger("InternalAlignmentType"); if (reader.hasAttribute("InternalAlignmentIndex")) InternalAlignmentIndex = reader.getAttributeAsInteger("InternalAlignmentIndex"); } else { AlignmentType = Undef; } // read the third geo group if present if (reader.hasAttribute("Third")) { Third = reader.getAttributeAsInteger("Third"); ThirdPos = (PointPos) reader.getAttributeAsInteger("ThirdPos"); } // Read the distance a constraint label has been moved if (reader.hasAttribute("LabelDistance")) LabelDistance = (float)reader.getAttributeAsFloat("LabelDistance"); if (reader.hasAttribute("LabelPosition")) LabelPosition = (float)reader.getAttributeAsFloat("LabelPosition"); if (reader.hasAttribute("IsDriving")) isDriving = reader.getAttributeAsInteger("IsDriving") ? true : false; if (reader.hasAttribute("IsInVirtualSpace")) isInVirtualSpace = reader.getAttributeAsInteger("IsInVirtualSpace") ? true : false; }