void LinearTransformAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("LinearTransformAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("m00")) != 0) SetM00(node->AsDouble()); if((node = searchNode->GetNode("m01")) != 0) SetM01(node->AsDouble()); if((node = searchNode->GetNode("m02")) != 0) SetM02(node->AsDouble()); if((node = searchNode->GetNode("m03")) != 0) SetM03(node->AsDouble()); if((node = searchNode->GetNode("m10")) != 0) SetM10(node->AsDouble()); if((node = searchNode->GetNode("m11")) != 0) SetM11(node->AsDouble()); if((node = searchNode->GetNode("m12")) != 0) SetM12(node->AsDouble()); if((node = searchNode->GetNode("m13")) != 0) SetM13(node->AsDouble()); if((node = searchNode->GetNode("m20")) != 0) SetM20(node->AsDouble()); if((node = searchNode->GetNode("m21")) != 0) SetM21(node->AsDouble()); if((node = searchNode->GetNode("m22")) != 0) SetM22(node->AsDouble()); if((node = searchNode->GetNode("m23")) != 0) SetM23(node->AsDouble()); if((node = searchNode->GetNode("m30")) != 0) SetM30(node->AsDouble()); if((node = searchNode->GetNode("m31")) != 0) SetM31(node->AsDouble()); if((node = searchNode->GetNode("m32")) != 0) SetM32(node->AsDouble()); if((node = searchNode->GetNode("m33")) != 0) SetM33(node->AsDouble()); if((node = searchNode->GetNode("invertLinearTransform")) != 0) SetInvertLinearTransform(node->AsBool()); if((node = searchNode->GetNode("transformVectors")) != 0) SetTransformVectors(node->AsBool()); }
void SimilarityTransformAttributes::SetFromNode(DataNode *parentNode) { if(parentNode == 0) return; DataNode *searchNode = parentNode->GetNode("SimilarityTransformAttributes"); if(searchNode == 0) return; DataNode *node; if((node = searchNode->GetNode("doRotate")) != 0) SetDoRotate(node->AsBool()); if((node = searchNode->GetNode("rotateOrigin")) != 0) { if(node->GetNodeType() == DOUBLE_ARRAY_NODE) { SetRotateOrigin(node->AsDoubleArray()); } else if(node->GetNodeType() == FLOAT_ARRAY_NODE) { const float *fa = node->AsFloatArray(); double da[3] = {fa[0], fa[1], fa[2]}; SetRotateOrigin(da); } } if((node = searchNode->GetNode("rotateAxis")) != 0) { if(node->GetNodeType() == DOUBLE_ARRAY_NODE) { SetRotateAxis(node->AsDoubleArray()); } else if(node->GetNodeType() == FLOAT_ARRAY_NODE) { const float *fa = node->AsFloatArray(); double da[3] = {fa[0], fa[1], fa[2]}; SetRotateAxis(da); } } if((node = searchNode->GetNode("rotateAmount")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetRotateAmount(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetRotateAmount((double)node->AsFloat()); } if((node = searchNode->GetNode("rotateType")) != 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 < 2) SetRotateType(AngleType(ival)); } else if(node->GetNodeType() == STRING_NODE) { AngleType value; if(AngleType_FromString(node->AsString(), value)) SetRotateType(value); } } if((node = searchNode->GetNode("doScale")) != 0) SetDoScale(node->AsBool()); if((node = searchNode->GetNode("scaleOrigin")) != 0) { if(node->GetNodeType() == DOUBLE_ARRAY_NODE) { SetScaleOrigin(node->AsDoubleArray()); } else if(node->GetNodeType() == FLOAT_ARRAY_NODE) { const float *fa = node->AsFloatArray(); double da[3] = {fa[0], fa[1], fa[2]}; SetScaleOrigin(da); } } if((node = searchNode->GetNode("scaleX")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetScaleX(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetScaleX((double)node->AsFloat()); } if((node = searchNode->GetNode("scaleY")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetScaleY(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetScaleY((double)node->AsFloat()); } if((node = searchNode->GetNode("scaleZ")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetScaleZ(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetScaleZ((double)node->AsFloat()); } if((node = searchNode->GetNode("doTranslate")) != 0) SetDoTranslate(node->AsBool()); if((node = searchNode->GetNode("translateX")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetTranslateX(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetTranslateX((double)node->AsFloat()); } if((node = searchNode->GetNode("translateY")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetTranslateY(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetTranslateY((double)node->AsFloat()); } if((node = searchNode->GetNode("translateZ")) != 0) { if(node->GetNodeType() == DOUBLE_NODE) SetTranslateZ(node->AsDouble()); else if(node->GetNodeType() == FLOAT_NODE) SetTranslateZ((double)node->AsFloat()); } if((node = searchNode->GetNode("transformVectors")) != 0) SetTransformVectors(node->AsBool()); }