예제 #1
0
bool LinearFitableFunction::setParametersToDefaultsProtected() {
	
    if (VERBOSE_FITABLE_FUNCTION) {
        mprintf("Fitable Function: setting paremeters to defaults");
    }
    
    // move default parameters into a M_LIST
    if ((defaultParameters->getNElements()) != (basisSet->getNElements())) {
        merror(M_SYSTEM_MESSAGE_DOMAIN,
			   "ERROR: Number of parameters does not match number of basis functions.");
        unlock();
        return false;    
    } 
    Datum _parameters(M_LIST, defaultParameters->getNElements());
    for (int i = 0; i<basisSet->getNElements(); i++) {
        if (VERBOSE_FITABLE_FUNCTION) {
            double temp = *(defaultParameters->getElement(i));
            if (VERBOSE_FITABLE_FUNCTION) mprintf("basis: %d param value: %f",i,temp);
        }
        _parameters.setElement(i, *(defaultParameters->getElement(i)));
    }
    this->setParametersProtected(_parameters);
	
    return true;
}
예제 #2
0
Datum LinearFitableFunction::getParameters() {

    Datum _parameters(M_LIST, (basisSet->getNElements()));
    for (int p=0; p< (basisSet->getNElements()); p++) {
        (&_parameters)->addElement(Parameters[p]);
    }
    return _parameters;
    
}
예제 #3
0
DynamicEditor::EditorFactoryType* DynamicEditor::searchExistingFactoryInstances(const std::string& factoryName)
{
    AbstractFactoryBase<Entity>* factory = nullptr; /// FIXME AbstractFactories::global().getFactory<Entity>(factoryName);
    EditorFactoryType* editor = nullptr;
    {
        FactoryParameters _parameters(true);
        deadBodies.push_back(factory->use(&_parameters, nullptr));
        std::vector<std::string> values = _parameters.getUndefinedLog(); /// FIXME this could be faster, its stored as a map internally, we could sort it
        for (auto editorMode = editorModes.begin(); editorMode != editorModes.end(); editorMode++)
        {
            unsigned int matches = 0;
            std::vector<std::vector<std::string>::iterator> matchedStrings; /// Keep a track of these so we can delete them in case of a complete match
            for (auto string = editorMode->first.begin(); string != editorMode->first.end(); string++)
            {
                for (auto value = values.begin(); value != values.end(); value++)
                {
                    if (*value == *string)
                    {
                        matches++;
                        matchedStrings.push_back(value);
                        break;
                    }
                }
            }
            if (matches == editorMode->first.size())
            {
                editor = new EditorFactoryType(editorMode->second, this, factoryName);
                while (!matchedStrings.empty())
                {
                    values.erase(matchedStrings.back());
                    matchedStrings.pop_back();
                }
                for (auto value = values.begin(); value != values.end(); value++)
                {
                    auto variable = editorVariables.find(*value);
                    if (variable != editorVariables.end())
                    {
                        editor->addInstanceVariableFactory(variable->second);
                    }
                }
                editor->addInstanceVariableFactory(nameVariableControllerFactory);
                //break;
                goto MATCH_FOUND;
            }
        }
    }
    return nullptr;
MATCH_FOUND:
    TextFileFactoryLoader loader(nullptr, nullptr, true); /// FIXME
    FactoryGetList getList;
    ///Events::global().registerListener<FactoryGetEvent<Entity>>(&getList,{eBlockQueue}); FIXME this is now missing
    //factory->baseInit(factoryName, &loader, &AbstractFactories::global());
    ///Events::global().unregisterListener<FactoryGetEvent<Entity>>(&getList, true);
    std::vector<std::string> values = loader.getUndefinedLog();
    FactoryParameters* params = new FactoryParameters(nullptr);
    CEGUI::Window* page = CEGUI::WindowManager::getSingletonPtr()->loadWindowLayout("EntityTypeTab.layout", factoryName);
    page = page->getChild(factoryName + "Properties");
    float uiElementTop = 0.f;
    for (auto value = values.begin(); value != values.end(); value++)
    {
        auto variable = editorVariables.find(*value);
        if (variable != editorVariables.end())
        {
            editor->addTypeVariable(variable->second->createVariable(page, params->getTypeTable(),factoryName, &uiElementTop));
        }
        else
        {
            TextEditBoxFactory factory(*value, "");
            editor->addTypeVariable(factory.createVariable(page, params->getTypeTable(),factoryName, &uiElementTop));
        }
    }
    page->setProperty("Text",factoryName);
    typeTab->addTab(page);

    page->setUserData(editor);

    CEGUI::Window* factoryNameBox = typeTab->getParent()->getChild("Root/EntityTypes/NewFactoryName");
    editor->setInstanceNameWidget(factoryNameBox);
    return editor;
}