// private Vector3 _previewPosition;
        //private Quaternion _previewRotation;

        //public Vector3 GetPreviewPosition()
        //{
        //    return Application.isPlaying ? _previewPosition : PreviewObject.transform.localPosition;
        //}

        //public Quaternion GetPreviewRotation()
        //{
        //    return Application.isPlaying ? _previewRotation : PreviewObject.transform.rotation;
        //}

        void Awake()
        {
            // _previewPosition = transform.InverseTransformPoint(PreviewObject.transform.position);
            //  _previewRotation = PreviewObject.transform.rotation;
            CheckProperties();
            HardwareRequirements = GetComponent <HardwareRequirements>();
        }
            //readonly float originalY;

            public HardwareNode(HardwareRequirements hardware, float radius, float weight) :
                base(hardware.GetInstanceID().ToString(), Reference.InverseTransformPoint(hardware.VisualReferenceInEditor.transform.position), radius,
                     weight)
            {
                Hardware = hardware;
                // originalY = Visual.transform.position.y;
            }
        protected static int GetTileAmount(HardwareRequirements hardwareSpecification, Vector2 tileSize)
        {
            var tiles = GetTileAmountAsVector2Int(hardwareSpecification, tileSize);

            Debug.Log(hardwareSpecification.gameObject + "/" + hardwareSpecification.transform.parent.gameObject.name + "=" + tiles.x * tiles.y);
            return(tiles.x * tiles.y);
        }
 protected static Vector2Int GetTileAmountAsVector2Int(HardwareRequirements hardwareSpecification, Vector2 tileSize)
 {
     return(GetTileAmountAsVector2Int(hardwareSpecification.Requirement, tileSize));
 }