diff options
Diffstat (limited to 'Project/Transformer.cpp')
-rw-r--r-- | Project/Transformer.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp index 2ba6850..4dfa7f4 100644 --- a/Project/Transformer.cpp +++ b/Project/Transformer.cpp @@ -28,6 +28,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position) if(m_parentList.size() == 0) { m_position = position; m_parentList.push_back(parent); + parent->AddChild(this); wxPoint2DDouble parentPt = parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position. parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. @@ -43,6 +44,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position) // Second bus. else if(parent != m_parentList[0]) { m_parentList.push_back(parent); + parent->AddChild(this); wxPoint2DDouble parentPt = parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position. parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. @@ -220,12 +222,18 @@ void Transformer::MoveNode(Element* parent, wxPoint2DDouble position) } else { if(m_activeNodeID == 1) { m_pointList[0] = m_movePts[0] + position - m_moveStartPt; - m_parentList[0] = NULL; - m_online = false; + if(m_parentList[0]) { + m_parentList[0]->RemoveChild(this); + m_parentList[0] = NULL; + m_online = false; + } } else if(m_activeNodeID == 2) { m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; - m_parentList[1] = NULL; - m_online = false; + if(m_parentList[1]) { + m_parentList[1]->RemoveChild(this); + m_parentList[1] = NULL; + m_online = false; + } } } |