void AddSFFloat(float value) { switch (GetCurrentNodeType()) { case VRML_NODETYPE_ELEVATIONGRID_HEIGHT: { ElevationGridNode *elev = (ElevationGridNode *)GetCurrentNodeObject(); elev->addHeight(value); } break; case VRML_NODETYPE_BACKGROUND_GROUNDANGLE: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addGroundAngle(value); } break; case VRML_NODETYPE_BACKGROUND_SKYANGLE: { BackgroundNode *bg = (BackgroundNode *)GetCurrentNodeObject(); bg->addSkyAngle(value); } break; case VRML_NODETYPE_INTERPOLATOR_KEY: switch (GetPrevNodeType()) { case VRML_NODETYPE_COLORINTERPOLATOR: { ColorInterpolatorNode *colorInterp = (ColorInterpolatorNode *)GetCurrentNodeObject(); colorInterp->addKey(value); } break; case VRML_NODETYPE_COORDINATEINTERPOLATOR: { CoordinateInterpolatorNode *coordInterp = (CoordinateInterpolatorNode *)GetCurrentNodeObject(); coordInterp->addKey(value); } break; case VRML_NODETYPE_NORMALINTERPOLATOR: { NormalInterpolatorNode *normInterp = (NormalInterpolatorNode *)GetCurrentNodeObject(); normInterp->addKey(value); } break; case VRML_NODETYPE_ORIENTATIONINTERPOLATOR: { OrientationInterpolatorNode *oriInterp = (OrientationInterpolatorNode *)GetCurrentNodeObject(); oriInterp->addKey(value); } break; case VRML_NODETYPE_POSITIONINTERPOLATOR: { PositionInterpolatorNode *posInterp = (PositionInterpolatorNode *)GetCurrentNodeObject(); posInterp->addKey(value); } break; case VRML_NODETYPE_SCALARINTERPOLATOR: { ScalarInterpolatorNode *scalarInterp = (ScalarInterpolatorNode *)GetCurrentNodeObject(); scalarInterp->addKey(value); } break; } break; case VRML_NODETYPE_INTERPOLATOR_KEYVALUE: switch (GetPrevNodeType()) { case VRML_NODETYPE_SCALARINTERPOLATOR: { ScalarInterpolatorNode *scalarInterp = (ScalarInterpolatorNode *)GetCurrentNodeObject(); scalarInterp->addKeyValue(value); } break; } break; case VRML_NODETYPE_LOD_RANGE: { ((LodNode *)GetCurrentNodeObject())->addRange(value); } break; case VRML_NODETYPE_NAVIGATIONINFO_AVATARSIZE: { NavigationInfoNode *navInfo = (NavigationInfoNode *)GetCurrentNodeObject(); navInfo->addAvatarSize(value); } break; case VRML_NODETYPE_TEXT_LENGTH: { TextNode *text = (TextNode *)GetCurrentNodeObject(); text->addLength(value); } break; } }