2015-12-29 23:20:20 +00:00
|
|
|
#include "BaseModelerTool.h"
|
|
|
|
|
|
|
|
#include "MainModelerWindow.h"
|
|
|
|
#include "Scenery.h"
|
|
|
|
#include "IntNode.h"
|
|
|
|
#include "IntPropertyBind.h"
|
|
|
|
#include "FloatNode.h"
|
|
|
|
#include "FloatPropertyBind.h"
|
|
|
|
#include "Logs.h"
|
|
|
|
|
|
|
|
class BaseModelerTool::pimpl {
|
|
|
|
public:
|
|
|
|
vector<unique_ptr<IntPropertyBind>> int_bindings;
|
|
|
|
vector<unique_ptr<FloatPropertyBind>> float_bindings;
|
|
|
|
};
|
|
|
|
|
2015-12-30 19:23:24 +00:00
|
|
|
BaseModelerTool::BaseModelerTool(MainModelerWindow *ui) : impl(new pimpl), ui(ui) {
|
2015-12-29 23:20:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BaseModelerTool::~BaseModelerTool() {
|
|
|
|
}
|
|
|
|
|
2015-12-30 19:14:16 +00:00
|
|
|
void BaseModelerTool::addIntBinding(const string &object, const string &property, const string &path, bool monitor) {
|
2015-12-30 19:23:24 +00:00
|
|
|
auto node = static_cast<IntNode *>(ui->getScenery()->findByPath(path));
|
2015-12-29 23:20:20 +00:00
|
|
|
if (node) {
|
2015-12-30 19:23:24 +00:00
|
|
|
impl->int_bindings.push_back(make_unique<IntPropertyBind>(ui, object, property, node));
|
2015-12-30 19:14:16 +00:00
|
|
|
|
|
|
|
if (monitor) {
|
2015-12-30 19:23:24 +00:00
|
|
|
startWatching(ui->getScenery(), path, false);
|
2015-12-30 19:14:16 +00:00
|
|
|
}
|
2015-12-29 23:20:20 +00:00
|
|
|
} else {
|
|
|
|
Logs::error("UI") << "Can't find int node for binding : " << path << endl;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-30 19:14:16 +00:00
|
|
|
void BaseModelerTool::addFloatBinding(const string &object, const string &property, const string &path, bool monitor) {
|
2015-12-30 19:23:24 +00:00
|
|
|
auto node = static_cast<FloatNode *>(ui->getScenery()->findByPath(path));
|
2015-12-29 23:20:20 +00:00
|
|
|
if (node) {
|
2015-12-30 19:23:24 +00:00
|
|
|
impl->float_bindings.push_back(make_unique<FloatPropertyBind>(ui, object, property, node));
|
2015-12-30 19:14:16 +00:00
|
|
|
|
|
|
|
if (monitor) {
|
2015-12-30 19:23:24 +00:00
|
|
|
startWatching(ui->getScenery(), path, false);
|
2015-12-30 19:14:16 +00:00
|
|
|
}
|
2015-12-29 23:20:20 +00:00
|
|
|
} else {
|
|
|
|
Logs::error("UI") << "Can't find float node for binding : " << path << endl;
|
|
|
|
}
|
|
|
|
}
|