示例#1
0
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();
		}


}
示例#2
0
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;
	}