コード例 #1
0
//- This function is responsible to make the connection (association) 
//- between manipulators and the affected attributes. When a node in a scene 
//- is selected and user click on “show manipulator tool”, 
//- this function is called with the selected node.
//- Arguments:
//- 	dependNode - the node which is selected
MStatus arrowLocatorManip::connectToDependNode(const MObject &dependNode)
{
	MStatus status = MStatus::kSuccess;

	//- Find the "windDirection" plug on the selected node, which is the custom
	//- locator node.
	MFnDependencyNode fnDepNode(dependNode);
	MPlug rotationPlug = fnDepNode.findPlug(MString("windDirection"),&status);

	//- Connect the "windDirection" plug with the base disc manip
	MFnDiscManip fnDisc(fDiscManip,&status);
	status = fnDisc.connectToAnglePlug(rotationPlug);


	//- Set up affecting relationship using conversion callback function
	//- We are using addPlugToManipConversionCallback so that whenever
	//- the custom locator moves, the dis manip moves with it.
	MFnDagNode fnDagNode(dependNode);
	fnDagNode.getPath(fNodePath);
	unsigned int centerPointIndex = fnDisc.centerIndex(&status);
	addPlugToManipConversionCallback(centerPointIndex,(plugToManipConversionCallback)&arrowLocatorManip::centerPointCallback);


	//- The following two functions are mandatory inside your
	//- connectToDependNode() function
	status = finishAddingManips();
	status = MPxManipContainer::connectToDependNode(dependNode);
	
	return status;

}
コード例 #2
0
//------------------------------------------------------------
MStatus moveManip::connectToDependNode(const MObject &node)
//------------------------------------------------------------
{
    MStatus stat;

    // Connect the plugs
    //    
	//für späteres onScreenGl
	view = M3dView::active3dView();

	

    MFnDependencyNode nodeFn(node,&stat);
    if(stat == MS::kFailure)stat.perror("Fehler bei depNode: ");


    MPlug tPlug = nodeFn.findPlug("endPoint", &stat);
	if(stat == MS::kFailure)stat.perror("Fehler bei tPlug: ");


    MFnFreePointTriadManip freePointManipFn(fFreePointManip);

	//transFn initialisieren
	transFn.setObject(fFreePointManip);
	
	stat = freePointManipFn.connectToPointPlug(tPlug);
	if(stat == MS::kFailure)stat.perror("Fehler bei connectToPlug: ");

	freePointIndex = freePointManipFn.pointIndex(); 	
/*	
	translatePlugIndex = addManipToPlugConversionCallback(tPlug, 
										 (manipToPlugConversionCallback) 
										 &moveManip::moveOthersCB);
/*
	addPlugToManipConversionCallback(freePointManipFn.pointIndex(),
										 (plugToManipConversionCallback) 
										 &moveManip::moveOthersCBReverse);
*/
	MPlug togglePlug = nodeFn.findPlug("fv");
	
	MFnToggleManip toggleFn(fToggleManip);
	toggleFn.connectToTogglePlug(togglePlug);

	toggleFn.setLength(0.0);
	addPlugToManipConversionCallback(toggleFn.startPointIndex(),
										 (plugToManipConversionCallback) 
										 &moveManip::setPointCB2);

	INVIS(cout<<freePointIndex<<" = freePointIndex "<<endl;)
コード例 #3
0
ファイル: swissArmyManip.cpp プロジェクト: DimondTheCat/xray
MStatus swissArmyLocatorManip::connectToDependNode(const MObject &node)
{
    MStatus stat;

	// Get the DAG path
	//
	MFnDagNode dagNodeFn(node);
	dagNodeFn.getPath(fNodePath);
	MObject parentNode = dagNodeFn.parent(0);
	MFnDagNode parentNodeFn(parentNode);

    // Connect the plugs
    //    
    MFnDependencyNode nodeFn;
    nodeFn.setObject(node);    

	// FreePointTriadManip
	//
    MFnFreePointTriadManip freePointTriadManipFn(fFreePointTriadManip);
	MPlug translationPlug = parentNodeFn.findPlug("t", &stat);
    if (MStatus::kFailure != stat) {
	    freePointTriadManipFn.connectToPointPlug(translationPlug);
	}

	// DirectionManip
	//
    MFnDirectionManip directionManipFn;
    directionManipFn.setObject(fDirectionManip);
	MPlug directionPlug = nodeFn.findPlug("arrow2Direction", &stat);
    if (MStatus::kFailure != stat) {
	    directionManipFn.connectToDirectionPlug(directionPlug);
		unsigned startPointIndex = directionManipFn.startPointIndex();
	    addPlugToManipConversionCallback(startPointIndex, 
										 (plugToManipConversionCallback) 
										 &swissArmyLocatorManip::startPointCallback);
	}

	// DistanceManip
	//
    MFnDistanceManip distanceManipFn;
    distanceManipFn.setObject(fDistanceManip);
	MPlug sizePlug = nodeFn.findPlug("size", &stat);
    if (MStatus::kFailure != stat) {
	    distanceManipFn.connectToDistancePlug(sizePlug);
		unsigned startPointIndex = distanceManipFn.startPointIndex();
	    addPlugToManipConversionCallback(startPointIndex, 
										 (plugToManipConversionCallback) 
										 &swissArmyLocatorManip::startPointCallback);
	}

	// CircleSweepManip
	//
	MFnCircleSweepManip circleSweepManipFn(fCircleSweepManip);
	MPlug arrow1AnglePlug = nodeFn.findPlug("arrow1Angle", &stat);
    if (MStatus::kFailure != stat) {
	    circleSweepManipFn.connectToAnglePlug(arrow1AnglePlug);
		unsigned centerIndex = circleSweepManipFn.centerIndex();
	    addPlugToManipConversionCallback(centerIndex, 
										 (plugToManipConversionCallback) 
										 &swissArmyLocatorManip::startPointCallback);
	}

	// DiscManip
	//
	MFnDiscManip discManipFn(fDiscManip);
	MPlug arrow3AnglePlug = nodeFn.findPlug("arrow3Angle", &stat);
    if (MStatus::kFailure != stat) {
	    discManipFn.connectToAnglePlug(arrow3AnglePlug);
		unsigned centerIndex = discManipFn.centerIndex();
	    addPlugToManipConversionCallback(centerIndex, 
										 (plugToManipConversionCallback) 
										 &swissArmyLocatorManip::startPointCallback);
	}

	// StateManip
	//
	MFnStateManip stateManipFn(fStateManip);

	MPlug statePlug = nodeFn.findPlug("state", &stat);
    if (MStatus::kFailure != stat) {
	    stateManipFn.connectToStatePlug(statePlug);
		unsigned positionIndex = stateManipFn.positionIndex();
	    addPlugToManipConversionCallback(positionIndex, 
										 (plugToManipConversionCallback) 
										 &swissArmyLocatorManip::startPointCallback);
	}

	// ToggleManip
	//
	MFnToggleManip toggleManipFn(fToggleManip);

	MPlug togglePlug = nodeFn.findPlug("toggle", &stat);
    if (MStatus::kFailure != stat) {
	    toggleManipFn.connectToTogglePlug(togglePlug);
		unsigned startPointIndex = toggleManipFn.startPointIndex();
	    addPlugToManipConversionCallback(startPointIndex, 
										 (plugToManipConversionCallback) 
										 &swissArmyLocatorManip::startPointCallback);
	}

	// Determine the transform node for the locator
	//
	MDagPath transformPath(fNodePath);
	transformPath.pop();

	MFnTransform transformNode(transformPath);

	// RotateManip
	//
	MFnRotateManip rotateManipFn(fRotateManip);

	MPlug rotatePlug = transformNode.findPlug("rotate", &stat);
	if (MStatus::kFailure != stat) {
	    rotateManipFn.connectToRotationPlug(rotatePlug);
		rotateManipFn.displayWithNode(node);
	}

	// ScaleManip
	//
	MFnScaleManip scaleManipFn(fScaleManip);

	MPlug scalePlug = transformNode.findPlug("scale", &stat);
    if (MStatus::kFailure != stat) {
	    scaleManipFn.connectToScalePlug(scalePlug);
		scaleManipFn.displayWithNode(node);
	}

	finishAddingManips();
	MPxManipContainer::connectToDependNode(node);
	
    return stat;
}