当前位置: 首页>>代码示例>>C++>>正文


C++ NodeRecPtr::getChild方法代码示例

本文整理汇总了C++中NodeRecPtr::getChild方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeRecPtr::getChild方法的具体用法?C++ NodeRecPtr::getChild怎么用?C++ NodeRecPtr::getChild使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在NodeRecPtr的用法示例。


在下文中一共展示了NodeRecPtr::getChild方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: execute

void AddLightToSceneCommand::execute(void)
{

    //Make the Light Beacon node
    _CreatedLightBeaconNode = makeCoredNode<Transform>();
    setName(_CreatedLightBeaconNode, _LightType.getName() + "_Beacon_Node");

    //Make the Light node
    LightRecPtr NewLight = dynamic_pointer_cast<Light>(_LightType.createContainer());
    NewLight->setBeacon(_CreatedLightBeaconNode);
    setName(NewLight, _LightType.getName() + "_NodeCore");
    _CreatedLightNode = Node::create();
    setName(_CreatedLightNode, _LightType.getName() + "_Node");
    _CreatedLightNode->setCore(NewLight);

    //Get the Root node
    NodeRecPtr RootNode = _RootScene->getPrimaryViewport()->getRoot();

    //Move all of the child nodes on the root onto children of the light node
    while(RootNode->getNChildren() != 0)
    {
        _CreatedLightNode->addChild(RootNode->getChild(0));
    }
    _CreatedLightNode->addChild(_CreatedLightBeaconNode);

    //Add the Light node to the root
    RootNode->addChild(_CreatedLightNode);

    dynamic_cast<ApplicationBuilder*>(MainApplication::the()->getBuilderMode())->getMainWindow()->getSceneComponentTree()->getTreeModel()->lightAdded(dynamic_cast<Light*>(_CreatedLightNode->getCore()));

    _HasBeenDone = true;
}
开发者ID:djkabala,项目名称:KabalaEngine,代码行数:32,代码来源:KEAddLightToSceneCommand.cpp

示例2: redo

void AddLightToSceneCommand::redo(void)
{
    Inherited::redo();


    //Get the Root node
    NodeRecPtr RootNode = _RootScene->getPrimaryViewport()->getRoot();

    //Move all of the child nodes on the root onto children of the light node
    while(RootNode->getNChildren() != 0)
    {
        _CreatedLightNode->addChild(RootNode->getChild(0));
    }
    _CreatedLightNode->addChild(_CreatedLightBeaconNode);

    //Add the Light node to the root
    RootNode->addChild(_CreatedLightNode);
    dynamic_cast<ApplicationBuilder*>(MainApplication::the()->getBuilderMode())->getMainWindow()->getSceneComponentTree()->getTreeModel()->lightAdded(dynamic_cast<Light*>(_CreatedLightNode->getCore()));
}
开发者ID:djkabala,项目名称:KabalaEngine,代码行数:19,代码来源:KEAddLightToSceneCommand.cpp

示例3: main


//.........这里部分代码省略.........
    SkeletonBlendedGeometryUnrecPtr ExampleSkeleton = SkeletonBlendedGeometry::create();

    //Joint
	JointRecPtr ExampleRootJoint = Joint::create();

    //Add this joint to the skeleton
    ExampleSkeleton->pushToJoints(ExampleRootJoint, Matrix());

    NodeRecPtr ExampleRootJointNode = makeNodeFor(ExampleRootJoint);

    NodeRecPtr TempRootJointNode = ExampleRootJointNode;
    NodeRefPtr GeoNode = makeNodeFor(BoxGeometry);
    TempRootJointNode->addChild(GeoNode);

	Matrix TempMat;
	//Create a set of randomly placed child joints
	for (Real32 i = 0.0f; i < 5.0f; ++i)
	{
		JointRecPtr ExampleChildJoint = Joint::create();
		NodeRecPtr ExampleChildJointNode = makeNodeFor(ExampleChildJoint);

        GeoNode = makeNodeFor(SphereGeometry);
        ExampleChildJointNode->addChild(GeoNode);

		//TempMat.setTranslate(RandomPoolManager::getRandomReal32(0.0, 10.0f), RandomPoolManager::getRandomReal32(0.0f, 10.0f), RandomPoolManager::getRandomReal32(0.0f, 10.0f));
        switch((static_cast<UInt32>(i) % 3))
        {
            case 0:
                TempMat.setTranslate(2.0f,0.0f,0.0f);
                break;
            case 1:
                TempMat.setTranslate(0.0f,2.0f,0.0f);
                break;
            case 2:
                TempMat.setTranslate(0.0f,0.0f,2.0f);
                break;
        }
		
		//Set bind and current transformations to TempMat (calculated above)
        ExampleChildJoint->setJointTransformation(TempMat);

		//Add ExampleChildJoint as a child to the previous joint	
        TempRootJointNode->addChild(ExampleChildJointNode);//add a Child to the root joint

		//ExampleChildJoint will be the next parent joint
		TempRootJointNode = ExampleChildJointNode;
        
        //Add this joint to the skeleton
        Matrix InvBind(TempRootJointNode->getToWorld());
        InvBind.invert();
        ExampleSkeleton->pushToJoints(ExampleChildJoint, InvBind);
	}

    //SkeletonDrawer
    SkeletonDrawableUnrecPtr ExampleSkeletonDrawable = SkeletonDrawable::create();
    ExampleSkeletonDrawable->setSkeleton(ExampleSkeleton);
    ExampleSkeletonDrawable->setMaterial(ExampleMaterial);
    ExampleSkeletonDrawable->setDrawBindPose(false);  //By default, we won't draw the skeleton's bind pose
    ExampleSkeletonDrawable->setBindPoseColor(Color4f(0.0, 1.0, 0.0, 1.0));  //When the skeleton's bind pose is rendered, it will be green
    ExampleSkeletonDrawable->setDrawPose(true);  //By default, we do draw the skeleton's current pose
    ExampleSkeletonDrawable->setPoseColor(Color4f(0.0, 0.0, 1.0, 1.0));  //The skeleton's current pose is rendered in blue
	
	//Skeleton Node
	SkeletonNode = Node::create();
    SkeletonNode->setCore(ExampleSkeletonDrawable);

    //Create scene
    NodeUnrecPtr scene = Node::create();
    scene->setCore(Group::create());
    scene->addChild(SkeletonNode);
    scene->addChild(ExampleRootJointNode);

    mgr->setRoot(scene);

	//Setup the Animation
	setupAnimation(ExampleRootJoint,
                   dynamic_cast<Joint*>(ExampleRootJointNode->getChild(1)->getCore()));

	//Set the currently playing animation to TheJointAnimation (can be switched at runtime via a key command)
	TheCurrentAnimation = TheJointAnimation;


    // Show the whole Scene
    mgr->showAll();


    //Open Window
    Vec2f WinSize(TutorialWindow->getDesktopSize() * 0.85f);
    Pnt2f WinPos((TutorialWindow->getDesktopSize() - WinSize) *0.5);
    TutorialWindow->openWindow(WinPos,
                        WinSize,
                                        "11BoneAnimation");

    //Main Loop
    TutorialWindow->mainLoop();

    osgExit();

    return 0;
}
开发者ID:msteners,项目名称:OpenSGToolbox,代码行数:101,代码来源:11BoneAnimation.cpp


注:本文中的NodeRecPtr::getChild方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。