bool CustomConnection::Bind(ObjectHandleT<ISlot> outputSlot, ObjectHandleT<ISlot> inputSlot) { bool result = false; if (outputSlot == nullptr || inputSlot == nullptr) { NGT_ERROR_MSG("Input arguments are null\n"); return result; } if (isConnected) { NGT_ERROR_MSG("Connection is already connected\n"); return result; } while (true) { result = outputSlot->CanConnect(inputSlot); if (!result) break; result = inputSlot->CanConnect(outputSlot); if (!result) break; if (outputSlot->Connect(m_id, inputSlot) && inputSlot->Connect(m_id, outputSlot)) { m_inputSlot = inputSlot.get(); m_outputSlot = outputSlot.get(); isConnected = true; } else { result = false; NGT_ERROR_MSG("Failed to connect input and output slots\n"); outputSlot->Disconnect(m_id, inputSlot); inputSlot->Disconnect(m_id, outputSlot); } break; } return result; }