ICurvePtr CurveEditor::createCurve(CurveTypes::CurveType curveType, bool add) { auto definitionManager = Context::queryInterface<IDefinitionManager>(); if(definitionManager) { // This method of creating a curve requires a default constructor //auto curveDef = definitionManager->getDefinition<ICurve>(); //if(curveDef) //{ // auto curve = TypeClassDefinition<Curve>::create(*curveDef, definitionManager); // curves_.emplace_back(curve); // return curve.get(); //} // Create a curve and pass it by reference to our exposed model for variants ICurvePtr pCurve = std::make_shared<Curve>(createInterpolator(curveType), definitionManager); if( add ) { storage_.emplace_back(pCurve); curves_.emplace_back(storage_.back().get()); } return pCurve; } return nullptr; }
ICurvePtr CurveEditor::createCurve(CurveTypes::CurveType curveType) { return ManagedObject<Curve>::make_unique(createInterpolator(curveType)); }