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();
        }
    }
Exemple #2
0
 public void DeleteSelected()
 {
     while (SelectedNodes.Count() > 0)
     {
         // Such an incredibly obtuse interface
         Node nd = SelectedNodes.First();
         nd.Parent.Remove(nd.Tag);
     }
 }