#pragma once

#include "AbstractVisualNode.h"

class QuantumWire;
class LineNode;

class QuantumWireNode : public AbstractVisualNode
{
public:
	QuantumWireNode(const Transform& t = {});

	virtual ~QuantumWireNode();

	void setInputLocation(const Point& point);

	void setOutputLocation(const Point& point);

	void setContent(QuantumWire* content);

	void update(SceneInfo* sceneInfo);

private:
	void createOrUpdateGeometry(SceneInfo* sceneInfo);

	QuantumWire* mContent{ nullptr };
	bool mContentDirty{ true };

	Point mInputLocation;
	Point mOutputLocation;

	std::unique_ptr<LineNode> mLine;
};