public bool AddNode(Node node, bool writeInDb = true)
{
if (node.PanelId != MAIN_PANEL_ID && GetPanelNode(node.PanelId) == null)
{
LogEngineError($"Can`t create node [{node.GetType().Name}]. Panel [{node.PanelId}] does not exist.");
return false;
}
bool checkNodeCanBeAdded = node.OnAddToEngine(this);
if (!checkNodeCanBeAdded)
{
LogEngineError($"Can`t create node [{node.GetType().Name}]. Aborted by node.");
return false;
}
lock (nodesLock)
nodes.Add(node);
if (writeInDb)
nodesDb?.AddNode(node);
LogEngineInfo($"New node [{node.GetType().Name}]");
OnNewNode?.Invoke(node);
return true;
}