void AddSFVec3f(float vector[3]) { switch (GetCurrentNodeType()) { case VRML_NODETYPE_NORMAL: { ((NormalNode *)GetCurrentNodeObject())->addVector(vector); } break; case VRML_NODETYPE_COORDINATE: { ((CoordinateNode *)GetCurrentNodeObject())->addPoint(vector); } break; case VRML_NODETYPE_INTERPOLATOR_KEYVALUE: switch (GetPrevNodeType()) { case VRML_NODETYPE_COORDINATEINTERPOLATOR: { CoordinateInterpolatorNode *coordInterp = (CoordinateInterpolatorNode *)GetCurrentNodeObject(); coordInterp->addKeyValue(vector); } break; case VRML_NODETYPE_NORMALINTERPOLATOR: { NormalInterpolatorNode *normInterp = (NormalInterpolatorNode *)GetCurrentNodeObject(); normInterp->addKeyValue(vector); } break; case VRML_NODETYPE_POSITIONINTERPOLATOR: { PositionInterpolatorNode *posInterp = (PositionInterpolatorNode *)GetCurrentNodeObject(); posInterp->addKeyValue(vector); } break; } break; case VRML_NODETYPE_EXTRUSION_SPINE: { ExtrusionNode *ex = (ExtrusionNode *)GetCurrentNodeObject(); ex->addSpine(vector); } break; } }