BOOL DialogModuleInterpNormal::OnInitDialog() { CDialog::OnInitDialog(); // TODO: この位置に初期化の補足処理を追加してください NormalInterpolatorNode *interp; char *selectString = NULL; SendDlgItemMessage(IDC_NODE_NAME, CB_RESETCONTENT, (WPARAM)0, (LPARAM)0L); for (interp = GetWorld()->getSceneGraph()->findNormalInterpolatorNode(); interp; interp=interp->nextTraversal()) { if (interp && StringLength(interp->getName()) && StringNCompare(interp->getName(), CTB_NODE_NAME, strlen(CTB_NODE_NAME))) SendDlgItemMessage(IDC_NODE_NAME, CB_ADDSTRING, 0, (LONG)(LPSTR)interp->getName()); if (!selectString) selectString = interp->getName(); } Node *node = getNode(); if (node) SendDlgItemMessage(IDC_NODE_NAME, CB_SELECTSTRING,(WPARAM)-1, (LPARAM)(LPCSTR)node->getName()); else if (selectString) SendDlgItemMessage(IDC_NODE_NAME, CB_SELECTSTRING,(WPARAM)-1, (LPARAM)(LPCSTR)selectString); return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります // 例外: OCX プロパティ ページの戻り値は FALSE となります }
NormalInterpolatorNode *SceneGraph::findNormalInterpolatorNode(char *name) { if (!name || strlen(name) <= 0) return NULL; for (NormalInterpolatorNode *node = findNormalInterpolatorNode(); node; node = node->nextTraversal()) { const char *nodeName = node->getName(); if (nodeName && strlen(nodeName)) { if (!strcmp(name, nodeName)) return node; } } return NULL; }
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; } }
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; } }