本文整理汇总了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;
}
示例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()));
}
示例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;
}