// Find children by id UIWidget* UIWidget::FindChildById(const int32 nId, bool bRecursive) { UIWidget* widget = NULL; GTGAMEOBJECT_FOREACH_CHILD(it) { // Get widget object widget = (UIWidget*)(*it); // Check if the widget is in its region if(widget && widget->GetId() == nId) { return widget; } if(bRecursive) { // Keep looking for the target in children widget = widget->FindChildById(nId, bRecursive); if(widget) { // Found it return widget; } } } return NULL; }
void SampleSelector::HandleWidgetEvent(StringHash eventType, VariantMap& eventData) { using namespace WidgetEvent; if (eventData[P_TYPE].GetUInt() == UI_EVENT_TYPE_CLICK) { UIWidget* target = static_cast<UIWidget*>(eventData[P_TARGET].GetPtr()); String exampleName = target->GetId().CString(); // Make sure we mark event handled, as we're deleting the button eventData[P_HANDLED] = true; // Goodbye UI FeatureExamples::GetUIView()->DeleteAllChildren(); currentSample_ = 0; if (exampleName == "Hello World") { currentSample_ = new HelloWorld(context_); } else if (exampleName == "Hello GUI") { currentSample_ = new HelloGui(context_); } else if (exampleName == "2D Sprite") { currentSample_ = new Atomic2DSprite(context_); } else if (exampleName == "2D Physics") { currentSample_ = new Physics2D(context_); } else if (exampleName == "2D Constraints") { currentSample_ = new Constraints2D(context_); } else if (exampleName == "2D Spriter Animation") { currentSample_ = new SpriterAnimation(context_); } else if (exampleName == "3D Static Scene") { currentSample_ = new StaticScene(context_); } else if (exampleName == "3D Animating Scene") { currentSample_ = new AnimatingScene(context_); } else if (exampleName == "3D Physics") { currentSample_ = new Physics3D(context_); } else if (exampleName == "3D Skeletal Animation") { currentSample_ = new SkeletalAnimation(context_); } else if (exampleName == "3D Character") { currentSample_ = new CharacterDemo(context_); } else if (exampleName == "3D Ragdolls") { currentSample_ = new Ragdolls(context_); } else if (exampleName == "3D Vehicle Demo") { currentSample_ = new VehicleDemo(context_); } else if (exampleName == "3D Crowd Navigation") { currentSample_ = new CrowdNavigation(context_); } else if (exampleName == "3D Dynamic Geometry") { currentSample_ = new DynamicGeometry(context_); } else if (exampleName == "3D Water") { currentSample_ = new Water(context_); } else if (exampleName == "3D Billboards") { currentSample_ = new Billboards(context_); } else if (exampleName == "3D Multiple Viewports") { currentSample_ = new MultipleViewports(context_); } else if (exampleName == "3D Decals") { currentSample_ = new Decals(context_); } else if (exampleName == "2D Rope") { currentSample_ = new PhysicsRope2D(context_); } else if (exampleName == "Render to Texture") { currentSample_ = new RenderToTexture(context_); } else if (exampleName == "3D Light Animation") { currentSample_ = new LightAnimation(context_); } else if (exampleName == "3D Particles") { currentSample_ = new Particles3D(context_); } if (currentSample_.NotNull()) { UnsubscribeFromEvent(E_KEYUP); currentSample_->Start(); } } }