internal override bool ParseNodeBodyElement(string id, VRMLParser parser) { int line = parser.Line; if (id == "centerOfMass") { CenterOfMass = parser.ParseSFVec3fValue(); } else if (id == "children") { List <X3DNode> nodes = parser.ParseSFNodeOrMFNodeValue(); foreach (X3DNode node in nodes) { X3DChildNode child = node as X3DChildNode; if (child == null) { parser.ErrorParsingNode(VRMLReaderError.UnexpectedNodeType, this, id, node, line); } else { Children.Add(child); } } } else if (id == "coord") { X3DNode node = parser.ParseSFNodeValue(); if (node != null) { Coord = node as X3DCoordinateNode; if (Coord == null) { parser.ErrorParsingNode(VRMLReaderError.UnexpectedNodeType, this, id, node, line); } } } else if (id == "displacers") { List <X3DNode> nodes = parser.ParseSFNodeOrMFNodeValue(); foreach (X3DNode node in nodes) { IX3DHAnimDisplacerNode displacer = node as IX3DHAnimDisplacerNode; if (displacer == null) { parser.ErrorParsingNode(VRMLReaderError.UnexpectedNodeType, this, id, node, line); } else { Displacers.Add(displacer); } } } else if (id == "mass") { Mass = parser.ParseDoubleValue(); } else if (id == "momentsOfInertia") { if (wasMomentsOfInertia) { MomentsOfInertia.AddRange(parser.ParseSFFloatOrMFFloatValue()); } else { MomentsOfInertia = parser.ParseSFFloatOrMFFloatValue(); } wasMomentsOfInertia = true; } else if (id == "name") { Name = parser.ParseStringValue(); } else if (id == "bboxCenter") { BBoxCenter = parser.ParseSFVec3fValue(); } else if (id == "bboxSize") { BBoxSize = parser.ParseSFVec3fValue(); } else { return(false); } return(true); }
internal override bool ParseNodeBodyElement(string id, VRMLParser parser) { int line = parser.Line; if (id == "center") { Center = parser.ParseSFVec3fValue(); } else if (id == "children") { List <X3DNode> nodes = parser.ParseSFNodeOrMFNodeValue(); foreach (X3DNode node in nodes) { X3DChildNode child = node as IX3DHAnimJointChildren; if (child == null) { parser.ErrorParsingNode(VRMLReaderError.UnexpectedNodeType, this, id, node, line); } else { Children.Add(child); } } } else if (id == "displacers") { List <X3DNode> nodes = parser.ParseSFNodeOrMFNodeValue(); foreach (X3DNode node in nodes) { IX3DHAnimDisplacerNode displacer = node as IX3DHAnimDisplacerNode; if (displacer == null) { parser.ErrorParsingNode(VRMLReaderError.UnexpectedNodeType, this, id, node, line); } else { Displacers.Add(displacer); } } } else if (id == "limitOrientation") { LimitOrientation = parser.ParseSFRotationValue(); } else if (id == "llimit") { Llimit.AddRange(parser.ParseSFFloatOrMFFloatValue()); } else if (id == "name") { Name = parser.ParseStringValue(); } else if (id == "rotation") { Rotation = parser.ParseSFRotationValue(); } else if (id == "scale") { Scale = parser.ParseSFVec3fValue(); } else if (id == "scaleOrientation") { ScaleOrientation = parser.ParseSFRotationValue(); } else if (id == "skinCoordIndex") { SkinCoordIndex.AddRange(parser.ParseSFInt32OrMFInt32Value()); } else if (id == "skinCoordWeight") { SkinCoordWeight.AddRange(parser.ParseSFFloatOrMFFloatValue()); } else if (id == "stiffness") { if (wasStiffness) { Stiffness.AddRange(parser.ParseSFFloatOrMFFloatValue()); } else { Stiffness = parser.ParseSFFloatOrMFFloatValue(); } wasStiffness = true; } else if (id == "translation") { Translation = parser.ParseSFVec3fValue(); } else if (id == "ulimit") { Ulimit.AddRange(parser.ParseSFFloatOrMFFloatValue()); } else if (id == "bboxCenter") { BBoxCenter = parser.ParseSFVec3fValue(); } else if (id == "bboxSize") { BBoxSize = parser.ParseSFVec3fValue(); } else { return(false); } return(true); }