!XT (Code) Update copyright headers in Code/Sandbox.
[CRYENGINE.git] / Code / Sandbox / Plugins / EditorSchematyc / GraphConnectionItem.cpp
blob822766a6473cdf96882eccd96d3312da5ced3e47
1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
3 #include "StdAfx.h"
4 #include "GraphConnectionItem.h"
6 #include "GraphPinItem.h"
8 #include "VariableStorage/AbstractVariableTypesModel.h"
10 #include <CrySchematyc/Script/IScriptGraph.h>
11 #include <NodeGraph/ConnectionWidget.h>
13 #include <QColor>
15 namespace CrySchematycEditor {
17 CConnectionItem::CConnectionItem(Schematyc::IScriptGraphLink& scriptGraphLink, CPinItem& sourcePin, CPinItem& targetPin, CryGraphEditor::CNodeGraphViewModel& model)
18 : CAbstractConnectionItem(model)
19 , m_scriptGraphLink(scriptGraphLink)
20 , m_sourcePin(sourcePin)
21 , m_targetPin(targetPin)
23 // TODO: This should happen in CAbstractConnectionItem constructor.
24 m_sourcePin.AddConnection(*this);
25 m_targetPin.AddConnection(*this);
26 // ~TODO
28 const EPinType pinType = sourcePin.GetPinType();
29 if (pinType == EPinType::Data)
30 m_styleId = "Connection::Data";
31 else if (pinType == EPinType::Execution || pinType == EPinType::Signal)
32 m_styleId = "Connection::Execution";
33 else
34 m_styleId = "Connection";
37 CConnectionItem::~CConnectionItem()
39 // TODO: This should happen in CAbstractConnectionItem destructor.
40 m_sourcePin.RemoveConnection(*this);
41 m_targetPin.RemoveConnection(*this);
42 // ~TODO
45 CryGraphEditor::CConnectionWidget* CConnectionItem::CreateWidget(CryGraphEditor::CNodeGraphView& view)
47 return new CryGraphEditor::CConnectionWidget(this, view);
50 QVariant CConnectionItem::GetId() const
52 return QVariant::fromValue(reinterpret_cast<quintptr>(&m_scriptGraphLink));
55 bool CConnectionItem::HasId(QVariant id) const
57 const Schematyc::IScriptGraphLink* pGraphLink = reinterpret_cast<Schematyc::IScriptGraphLink*>(id.value<quintptr>());
58 return (&m_scriptGraphLink == pGraphLink);