void BuildRaycast()
    {
        Ray        ray = cam.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;

        if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, groundLayerMask))
        {
            groundPos = hitInfo.point;

            SelectedNodes = GridTransform.GetNodes(
                groundPos,
                NowObjectToBuild.Dimensions.x,
                NowObjectToBuild.Dimensions.y,
                GetRotation().eulerAngles.y);

            if (OldNodes == null)
            {
                OldNodes = SelectedNodes;
            }

            if (SelectedNodes != null)
            {
                if (SelectedNodes != OldNodes)
                {
                    highlight.Enable();
                }

                Node aNode = SelectedNodes.First();
                Node bNode = SelectedNodes.Last();

                Quaternion rotation = GetRotation();

                if (aNode != null && bNode != null)
                {
                    Vector3 position = GridTransform.CenterVector3FromCoords(aNode.coords, bNode.coords);

                    if (!GridTransform.IsBlocked(SelectedNodes, NowObjectToBuild.ObjType))
                    {
                        highlight.PlaceHighlight(position, rotation);
                    }
                    else
                    {
                        highlight.PlaceHighlight(position, rotation, blockedMaterial);
                    }
                }
                else
                {
                    highlight.Disable();
                }

                OldNodes = SelectedNodes;
            }
        }

        else
        {
            SelectedNodes = null;
            highlight.Disable();
        }
    }
    public void BuildObject(Node[] nodes)
    {
        if (!GridTransform.IsBlocked(nodes, NowObjectToBuild.ObjType))
        {
            Node    aNode    = nodes.First();
            Node    bNode    = nodes.Last();
            Vector3 position = GridTransform.CenterVector3FromCoords(aNode.coords, bNode.coords);

            Object o = GameObject.Instantiate(NowObjectToBuild.Obj, position, GetRotation(), objectsParent).AddComponent <Object>();
            o.thisObjectData = NowObjectToBuild;
            o.SetRandomPalette();
            foreach (Node n in nodes)
            {
                if (o.thisObjectData.ObjType == ObjectType.Building)
                {
                    n.building = o;
                }
                else if (o.thisObjectData.ObjType == ObjectType.Flooring)
                {
                    n.flooring = o;
                }
            }
        }
    }