owl-bt
Version:
owl-bt is editor for Behavior trees. It has been inspired by Unreal engine behavior trees in a way, that it supports special node items like decorators and services. This makes trees smaller and much more readable.
53 lines (41 loc) • 1.13 kB
JavaScript
;
const path = require('path');
const errors = require('errno-codes');
const bluebird = require('bluebird');
let fs = bluebird.promisifyAll(require("fs"));
const _ = require('lodash');
const fileWatcher = require('../fileWatcher');
const project = require('../project');
const eventName = 'prj-reload';
const url = '/prj-watch';
let prjWatchers = {};
function getFileWatcher(prjPath) {
let watcher = prjWatchers[prjPath];
if (!watcher) {
watcher = fileWatcher.create(prjPath);
prjWatchers[prjPath] = watcher;
}
return watcher;
}
function start(io) {
let prjWatchIo = io.of(url);
prjWatchIo.on('connection', socket => {
let prjWatcher;
let treePath = socket.request._query.treePath;
socket.on('disconnect', () => {
if (prjWatcher) {
prjWatcher.removeListener(socket.id);
}
});
project.getProject(treePath)
.then(prj => {
prjWatcher = getFileWatcher(prj.path);
prjWatcher.addListener(socket.id, (prjContent) => {
socket.emit(eventName, prjContent);
});
});
});
}
module.exports = {
start: start
};