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; } } } }