internal override bool ParseNodeBodyElement(string id, VRMLParser parser)
        {
            int line = parser.Line;

            if (id == "appliedParameters")
            {
                if (wasAppliedParameters)
                {
                    AppliedParameters.AddRange(parser.ParseSFStringOrMFStringValue());
                }
                AppliedParameters    = parser.ParseSFStringOrMFStringValue();
                wasAppliedParameters = true;
            }
            else if (id == "bounce")
            {
                Bounce = parser.ParseDoubleValue();
            }
            else if (id == "collidables")
            {
                List <X3DNode> nodes = parser.ParseSFNodeOrMFNodeValue();
                foreach (X3DNode node in nodes)
                {
                    IX3DCollisionCollectionCollidables colls = node as IX3DCollisionCollectionCollidables;
                    if (colls == null)
                    {
                        parser.ErrorParsingNode(VRMLReaderError.UnexpectedNodeType, this, id, node, line);
                    }
                    else
                    {
                        Collidables.Add(colls);
                    }
                }
            }
            else if (id == "enabled")
            {
                Enabled = parser.ParseBoolValue();
            }
            else if (id == "frictionCoefficients")
            {
                FrictionCoefficients = parser.ParseSFVec2fValue();
            }
            else if (id == "minBounceSpeed")
            {
                MinBounceSpeed = parser.ParseDoubleValue();
            }
            else if (id == "slipFactors")
            {
                SlipFactors = parser.ParseSFVec2fValue();
            }
            else if (id == "softnessConstantForceMix")
            {
                SoftnessConstantForceMix = parser.ParseDoubleValue();
            }
            else if (id == "softnessErrorCorrection")
            {
                SoftnessErrorCorrection = parser.ParseDoubleValue();
            }
            else if (id == "surfaceSpeed")
            {
                SurfaceSpeed = parser.ParseSFVec2fValue();
            }
            else
            {
                return(false);
            }
            return(true);
        }
 internal override bool ParseNodeBodyElement(string id, VRMLParser parser)
 {
     if (id == "appliedParameters")
     {
         if (wasAppliedParameters)
         {
             AppliedParameters.AddRange(parser.ParseSFStringOrMFStringValue());
         }
         AppliedParameters    = parser.ParseSFStringOrMFStringValue();
         wasAppliedParameters = true;
     }
     else if (id == "bounce")
     {
         Bounce = parser.ParseDoubleValue();
     }
     else if (id == "contactNormal")
     {
         ContactNormal = parser.ParseSFVec3fValue();
     }
     else if (id == "depth")
     {
         Depth = parser.ParseDoubleValue();
     }
     else if (id == "frictionCoefficients")
     {
         FrictionCoefficients = parser.ParseSFVec2fValue();
     }
     else if (id == "frictionDirection")
     {
         FrictionDirection = parser.ParseSFVec3fValue();
     }
     else if (id == "minbounceSpeed")
     {
         MinbounceSpeed = parser.ParseDoubleValue();
     }
     else if (id == "position")
     {
         Position = parser.ParseSFVec3fValue();
     }
     else if (id == "slipCoefficients")
     {
         SlipCoefficients = parser.ParseSFVec2fValue();
     }
     else if (id == "softnessConstantForceMix")
     {
         SoftnessConstantForceMix = parser.ParseDoubleValue();
     }
     else if (id == "softnessErrorCorrection")
     {
         SoftnessErrorCorrection = parser.ParseDoubleValue();
     }
     else if (id == "surfaceSpeed")
     {
         SurfaceSpeed = parser.ParseSFVec2fValue();
     }
     else
     {
         return(false);
     }
     return(true);
 }