void ConeAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("ConeAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("angle")) != 0) SetAngle(node->AsDouble()); if((node = searchNode->GetNode("origin")) != 0) SetOrigin(node->AsDoubleArray()); if((node = searchNode->GetNode("normal")) != 0) SetNormal(node->AsDoubleArray()); if((node = searchNode->GetNode("representation")) != 0) { // Allow enums to be int or string in the config file if(node->GetNodeType() == INT_NODE) { int ival = node->AsInt(); if(ival >= 0 && ival < 3) SetRepresentation(Representation(ival)); } else if(node->GetNodeType() == STRING_NODE) { Representation value; if(Representation_FromString(node->AsString(), value)) SetRepresentation(value); } } if((node = searchNode->GetNode("upAxis")) != 0) SetUpAxis(node->AsDoubleArray()); if((node = searchNode->GetNode("cutByLength")) != 0) SetCutByLength(node->AsBool()); if((node = searchNode->GetNode("length")) != 0) SetLength(node->AsDouble()); }
void PlaneAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("PlaneAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("origin")) != 0) SetOrigin(node->AsDoubleArray()); if((node = searchNode->GetNode("normal")) != 0) SetNormal(node->AsDoubleArray()); if((node = searchNode->GetNode("upAxis")) != 0) SetUpAxis(node->AsDoubleArray()); if((node = searchNode->GetNode("haveRadius")) != 0) SetHaveRadius(node->AsBool()); if((node = searchNode->GetNode("radius")) != 0) SetRadius(node->AsDouble()); if((node = searchNode->GetNode("threeSpace")) != 0) SetThreeSpace(node->AsBool()); }