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; }
Datum LinearFitableFunction::getParameters() { Datum _parameters(M_LIST, (basisSet->getNElements())); for (int p=0; p< (basisSet->getNElements()); p++) { (&_parameters)->addElement(Parameters[p]); } return _parameters; }
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; }