1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
4 #include "GraphConnectionItem.h"
6 #include "GraphPinItem.h"
8 #include "VariableStorage/AbstractVariableTypesModel.h"
10 #include <CrySchematyc/Script/IScriptGraph.h>
11 #include <NodeGraph/ConnectionWidget.h>
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);
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";
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);
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
);