本文整理汇总了C++中ListNode::addChild方法的典型用法代码示例。如果您正苦于以下问题:C++ ListNode::addChild方法的具体用法?C++ ListNode::addChild怎么用?C++ ListNode::addChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ListNode
的用法示例。
在下文中一共展示了ListNode::addChild方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
/**
*This function contains the code which allows items to be
*grouped (contain each other) and considered one item.
*Releasing an item you are dragging over another item (while
*holding shift) makes the first item the second items child.
*This means that the first item can nolonger be iteracted with
*and that moving or reordering the second item will cause the
*same to happen to the first item. Any number of items can be
*made children of an item but if you make an item with a child
*a child that items child will disapear.
*
*This satisfies the "move range of items" requirement, goal F
*and the "ojects can contain objects" requirement, goal I
*/
void homework2App::mouseUp(MouseEvent event){
if(event.isShiftDown()&&event.isLeft()&&selectedNode_!=NULL){
ListNode* currentNode = headNode_;
do{
if(currentNode->shape_->
isInside(selectedNode_->shape_->x_,
selectedNode_->shape_->y_))
{
selectedNode_ = selectedNode_->removeNode();
currentNode->addChild(selectedNode_);
selectedNode_ = NULL;
break;
}
currentNode = currentNode->next_;
}while(currentNode!=headNode_);
}
}
示例2: test_large_scene
int test_large_scene(Util::UI::Window * window, Util::UI::EventContext & eventContext) {
// texture registry
std::map<std::string, Util::Reference<Rendering::Texture> > textures;
std::cout << "Create FrameContext...\n";
FrameContext fc;
unsigned int renderingFlags = /*BOUNDING_BOXES|SHOW_META_OBJECTS|*/FRUSTUM_CULLING/*|SHOW_COORD_SYSTEM*/;//|SHOW_COORD_SYSTEM;
std::cout << "Create scene graph...\n";
Util::Reference<GroupNode> root = new MinSG::ListNode();
/// Skybox
SkyboxState * sb = SkyboxState::createSkybox("Data/texture/?.bmp");
root->addState(sb);
/// Some shperes...
{
std::default_random_engine engine;
std::uniform_real_distribution<float> coordinateDist(0.0f, 200.0f);
std::vector<Util::Reference<Rendering::Mesh> > spheres;
Util::Reference<Rendering::Mesh> icosahedron = Rendering::MeshUtils::PlatonicSolids::createIcosahedron();
for(int i=0;i<6;++i)
spheres.push_back(Rendering::MeshUtils::PlatonicSolids::createEdgeSubdivisionSphere(icosahedron.get(), i)); // 6... 81920 triangles each
for (int i = 0; i < 1000; i++) {
// create a real clone inclusive internal data!
MinSG::GeometryNode * gn = new GeometryNode(spheres[std::uniform_int_distribution<std::size_t>(0, spheres.size() - 1)(engine)]->clone());
gn->moveRel(Geometry::Vec3(coordinateDist(engine), coordinateDist(engine), coordinateDist(engine)));
root->addChild(gn);
gn->scale(0.1 + std::uniform_real_distribution<float>(0.0f, 1000.0f)(engine) / 400.0);
}
}
/// Camera
Node * schwein = loadModel(Util::FileName("Data/model/Schwein.low.t.ply"), MESH_AUTO_CENTER | MESH_AUTO_SCALE);
ListNode * camera = new ListNode();
CameraNode * camNode = new CameraNode();
camNode->setViewport(Geometry::Rect_i(0, 0, 1024, 768));
camNode->setNearFar(0.1, 2000);
camNode->applyVerticalAngle(80);
camNode->moveRel(Geometry::Vec3(0, 4, 10));
camera->addChild(camNode);
camera->addChild(schwein);
schwein->moveRel(Geometry::Vec3(0, 0, 0));
schwein->rotateLocal_deg(180, Geometry::Vec3(0, 1, 0));
LightNode * myHeadLight = LightNode::createPointLight();
myHeadLight->scale(1);
myHeadLight->moveRel(Geometry::Vec3(0, 0, 0));
camera->addChild(myHeadLight);
LightingState * lightState = new LightingState;
lightState->setLight(myHeadLight);
root->addState(lightState);
root->addChild(camera);
/// Eventhandler
MoveNodeHandler * eh = new MoveNodeHandler();
MoveNodeHandler::initClaudius(eh, camera);
// ---------------------------------------------------------------------------------------------
Rendering::RenderingContext::clearScreen(Util::Color4f(0.5f, 0.5f, 0.5f, 0.5f));
// ----
GET_GL_ERROR();
uint32_t fpsFrameCounter = 0;
Util::Timer fpsTimer;
std::cout << "\nEntering main loop...\n";
// program main loop
bool done = false;
while (!done) {
++fpsFrameCounter;
double seconds = fpsTimer.getSeconds();
if (seconds > 1.0) {
double fps = static_cast<double> (fpsFrameCounter) / seconds;
std::cout << "\r " << fps << " fps ";
std::cout.flush();
fpsTimer.reset();
fpsFrameCounter = 0;
}
// message processing loop
eventContext.getEventQueue().process();
while (eventContext.getEventQueue().getNumEventsAvailable() > 0) {
Util::UI::Event event = eventContext.getEventQueue().popEvent();
// check for messages
switch (event.type) {
//.........这里部分代码省略.........