void CurveEditor::handleEvent(Event *event) { if(mode == MODE_ADD) { if(event->getDispatcher() == bg) { if(event->getEventCode() == InputEvent::EVENT_MOUSEDOWN) { InputEvent *inputEvent = (InputEvent*)event; if(selectedCurve) { Vector2 pos = inputEvent->mousePosition; pos.x = pos.x/610.0; pos.y = 1.0-(pos.y/254.0); BezierCurve *targetCurve = selectedCurve->targetCurve; bool done = false; for(int i=0; i < targetCurve->getNumControlPoints(); i++) { if(pos.x < targetCurve->getControlPoint(i)->p2.x && !done) { targetCurve->insertPoint = targetCurve->getControlPoint(i); done = true; } } targetCurve->addControlPoint2dWithHandles(pos.x-0.1, pos.y, pos.x, pos.y, pos.x + 0.1, pos.y); selectedCurve->updatePoints(); selectedCurve->updateCurve(); } } } } if(event->getDispatcher() == selectButton) { selectorImage->setPosition(selectButton->getPosition().x - 4, selectButton->getPosition().y - 4); setMode(0); } if(event->getDispatcher() == addButton) { selectorImage->setPosition(addButton->getPosition().x - 4, addButton->getPosition().y - 4); setMode(1); } if(event->getDispatcher() == removeButton) { selectorImage->setPosition(removeButton->getPosition().x - 4, removeButton->getPosition().y - 4); setMode(2); } if(event->getDispatcher() == treeContainer->getRootNode()) { if(event->getEventCode() == UITreeEvent::SELECTED_EVENT) { EditCurve *curve = (EditCurve *)treeContainer->getRootNode()->getSelectedNode()->getUserData(); if(selectedCurve) { selectedCurve->Deactivate(); } selectedCurve = curve; if(curve) { curve->Activate(); curve->setMode(mode); } } } UIWindow::handleEvent(event); }