8 std::vector<LinkEntity*> innerLinks;
9 std::vector<LinkEntity*> pathLinks;
22 void init()
override {
26 void update(
float deltaTime)
override {
36 if (link && std::find(pathLinks.begin(), pathLinks.end(), link) == pathLinks.end()) {
37 pathLinks.push_back(link);
43 pathLinks.erase(std::remove(pathLinks.begin(), pathLinks.end(), link), pathLinks.end());
46 std::string GetComponentName()
override {
47 return "PortSlotComponent";
50 void showGUI()
override {
54 void createInnerLinks() {
55 for (
size_t i = 1; i < pathLinks.size(); i++) {
60 NodeEntity* prevToNode = prevLink->getToNode();
61 NodeEntity* currFromNode = currLink->getFromNode();
63 if (prevToNode != currFromNode)
64 TazGraphEngine::ConsoleLogger::error(
"Should be same node to create innerPaths!");
66 if (!prevToNode || !currFromNode)
69 int prevToPortIndex = prevLink->toPort;
70 int currFromPortIndex = currLink->fromPort;
72 if (prevToPortIndex < 0 || currFromPortIndex < 0)
76 auto& newInnerLink = entity->getManager()->addEntity<
Link>(
77 prevToNode, currFromNode,
78 prevToPortIndex, currFromPortIndex,
79 prevLink->toSlotIndex, currLink->fromSlotIndex
81 newInnerLink.addGroup(Manager::groupPathInnerLinks);
85 innerLinks.push_back(&newInnerLink);
87 entity->getManager()->grid->addLink(&newInnerLink, entity->getManager()->grid->getGridLevel());
91 void removeInnerLinks() {
92 for (
auto* innerLink : innerLinks) {
93 if (!innerLink)
continue;