void MorphByBone::BringUpGraph(int whichBone, int whichMorph) { if ((whichBone < 0) || (whichBone >= boneData.Count()) || (whichMorph < 0) || (whichMorph >= boneData[whichBone]->morphTargets.Count())) { return; } //see if we need to create a graph if (boneData[whichBone]->morphTargets[whichMorph]->externalFalloffID==-1) boneData[currentBone]->morphTargets[currentMorph]->CreateGraph(this,pblock); //get the ref ReferenceTarget *ref = NULL; int refID = boneData[whichBone]->morphTargets[whichMorph]->externalFalloffID; if ((refID < 0) || (refID >= pblock->Count(pb_falloffgraphlist))) return; pblock->GetValue(pb_falloffgraphlist,0,ref,FOREVER,refID); if (ref == NULL) return; ICurveCtl *graph = (ICurveCtl *) ref; //rename the window to the morph name graph->SetTitle(boneData[currentBone]->morphTargets[currentMorph]->name); graph->SetCustomParentWnd(GetDlgItem(rollupPropHWND, IDC_EDITGRAPH)); graph->SetMessageSink(rollupPropHWND); //pop it up graph->SetCCFlags(CC_ASPOPUP|CC_DRAWBG|CC_DRAWSCROLLBARS|CC_AUTOSCROLL|CC_DRAWUTOOLBAR| CC_DRAWRULER|CC_DRAWGRID|CC_DRAWLTOOLBAR|CC_SHOW_CURRENTXVAL|CC_ALL_RCMENU|CC_SINGLESELECT|CC_NOFILTERBUTTONS); if (graph->IsActive()) graph->SetActive(FALSE); else { graph->SetActive(TRUE); graph->ZoomExtents(); } }
INT_PTR MorphByBoneParamsMapDlgProcSoftSelection::DlgProc(TimeValue t,IParamMap2 *map,HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { ICurveCtl *curveCtl = mod->GetCurveCtl(); curveCtl->SetCustomParentWnd(GetDlgItem(hWnd, IDC_CURVE)); curveCtl->SetMessageSink(hWnd); curveCtl->SetActive(TRUE); break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_LOOP_BUTTON: { macroRecorder->FunctionCall(_T("$.modifiers[#Skin_Morph].skinMorphOps.loop"), 0, 0); mod->EdgeSel(TRUE); break; } case IDC_RING_BUTTON: { macroRecorder->FunctionCall(_T("$.modifiers[#Skin_Morph].skinMorphOps.ring"), 0, 0); mod->EdgeSel(FALSE); break; } case IDC_SHRINK_BUTTON: { macroRecorder->FunctionCall(_T("$.modifiers[#Skin_Morph].skinMorphOps.shrink"), 0, 0); mod->GrowVerts(FALSE); break; } case IDC_GROW_BUTTON: { macroRecorder->FunctionCall(_T("$.modifiers[#Skin_Morph].skinMorphOps.grow"), 0, 0); mod->GrowVerts(TRUE); break; } case IDC_RESETGRAPH_BUTTON: { macroRecorder->FunctionCall(_T("$.modifiers[#Skin_Morph].skinMorphOps.resetSelectionGraph"), 0, 0); mod->ResetSelectionGraph(); break; } } break; } } return FALSE; }