Ejemplo n.º 1
0
int CreateSubTreeWithNopCubes( CRef& parentNode, CString& nodeName, CString& path, CString& identifier, int subLevels, int childrenPerLevel, int operatorsPerNode )
{
	X3DObject parentX3DObject(parentNode);
	X3DObject meshObj;

	parentX3DObject.AddGeometry(L"Cube",L"MeshSurface",nodeName,meshObj);
	CRef newNode = meshObj.GetRef();

	CRef realTarget = meshObj.GetActivePrimitive().GetRef();

	for( int i = 0; i < operatorsPerNode; i ++ ) {
		CustomOperator op = Application().GetFactory().CreateObject("exocortex_nop");
		op.AddOutputPort(realTarget);
		op.AddInputPort(realTarget);

		siConstructionMode consMode = siConstructionModeModeling;
		op.Connect(consMode);

		op.PutParameterValue(L"path",path);
		op.PutParameterValue(L"identifier",identifier);
	}

	int numNodes = 1;

	if( subLevels > 0 ) {
		for( int i = 0; i < childrenPerLevel; i ++ ) {
			std::stringstream s;
			s << "node_level" << subLevels << "_child" << i;
			CString childNodeName( s.str().c_str() );
			numNodes += CreateSubTreeWithNopCubes( newNode, childNodeName, path, identifier, subLevels - 1, childrenPerLevel, operatorsPerNode );
		}
	}

	return numNodes ;
}