// Update is called once per frame void Update() { if (justExited > 0.0f) { justExited -= Time.deltaTime; } if (IsInWireEditMode()) { Vector2 mousePosition = m_visualGridManager.GetSnapPoint(new Vector2(Input.mousePosition.x, Input.mousePosition.y)); Vector2Int oGridoob = Vector2Int.zero; Vector2Int oGrid = Vector2Int.zero; bool foundGrid = m_visualGridManager.GetGridCoordinates(mousePosition, ref oGrid, false, true); // In bounds for dragging bool foundGridOOB = m_visualGridManager.GetGridCoordinates(mousePosition, ref oGridoob, false, false) && oGridoob.x >= 0 && oGridoob.x < m_gridManager.DimensionX + 2 && oGridoob.y >= 0 && oGridoob.y < m_gridManager.DimensionY + 2; // Allow oob for start/end if (m_isDragging) { CellCoordinates cell = new CellCoordinates(); bool found = false; if (foundGridOOB) { CellCoordinates oobCell = new CellCoordinates((uint)oGridoob.x, (uint)oGridoob.y); GridObject o = m_gridManager.GetCell(oobCell); if (o != null) { cell = oobCell; found = true; } } if (!found && foundGrid) { cell = new CellCoordinates((uint)oGrid.x, (uint)oGrid.y); found = true; } if (found) { PassThroughCell(cell); string log = "WireManager: Current path - "; foreach (CellCoordinates x in m_passedThrough.ToArray()) { log += x.ToString() + " "; } if (LogVerbose) { Log(log); } } } // Start drag if (Input.GetMouseButtonDown(0) && !m_isDragging) { if (foundGridOOB) { CellCoordinates cell = new CellCoordinates((uint)oGridoob.x, (uint)oGridoob.y); // Valid start point, begin StartDragging(cell); if (!m_isDragging) { EndMode(); } } else { EndMode(); } } // End Drag/Mode if (Input.GetMouseButtonUp(0) && m_isDragging) { TryCommit(); } // Delete if (Input.GetMouseButtonUp(1) && !m_isDragging) { if (foundGrid) { CellCoordinates cell = new CellCoordinates((uint)oGrid.x, (uint)oGrid.y);; GridObject o = m_gridManager.GetCell(cell); if (o != null && o.ObjectType == GridObjectType.Wire) { m_wireVisualManager.ClearWire(cell); m_gridManager.ClearCell(cell); } else { EndMode(); } } else { EndMode(); } } } }
public virtual new void OnPointerUp(PointerEventData _eventData) { if (_eventData.button == PointerEventData.InputButton.Left) { if (!m_wireManager.IsInWireEditMode()) { DoStateTransition(currentSelectionState, false); m_isBeingDragged = false; if (m_infoPopup != null && m_isHighlighted) { m_isHighlighted = false; m_infoPopup.PopText(); } Vector2Int oGrid = Vector2Int.zero; CellCoordinates oldCoordinates = m_cellCoordinates; if (m_visualGridManager.GetGridCoordinates(m_rectTransform.anchoredPosition, ref oGrid, false) && m_visualGridManager.IsGridObjectValid(m_rectTransform.anchoredPosition, m_visualGate, false)) { CellCoordinates cell = new CellCoordinates((uint)oGrid.x, (uint)oGrid.y); m_cellCoordinates = cell; if (m_isPlaced) { if (m_cellCoordinates != oldCoordinates) { m_gameplayManager.ClearCell(oldCoordinates, true); } } if (m_visualGate != null) { VisualGate visualGate = GetComponent <VisualGate>(); if (visualGate != null) { if (visualGate.gateType != GateType.IncrementDecrement) { m_gameplayManager.AddGate(visualGate.gateType, cell, visualGate.objectOrientation, gameObject, 0, m_isPlaced); } else { m_gameplayManager.AddGate(visualGate.gateType, cell, visualGate.objectOrientation, gameObject, visualGate.value, m_isPlaced); } if (!m_isPlaced) { GameObject copy = Instantiate(gameObject, m_gameplayManager.scrollViewParent); copy.GetComponent <VisualBase>().ResetBase(); copy.GetComponent <RectTransform>().anchoredPosition = visualGate.GetSpawnLocation(); } } } //If we were on a space clear it if (m_isPlaced) { m_gameplayManager.UpdateGiblets(m_cellCoordinates, true); } m_isPlaced = true; } else { if (!m_isPlaced) { if (m_visualGate != null) { GetComponent <RectTransform>().SetParent(m_gameplayManager.scrollViewParent); GetComponent <RectTransform>().anchoredPosition = m_visualGate.GetSpawnLocation(); GetComponent <VisualBase>().ResetBase(); } } else { //If we have already been placed. Kill yourself m_gameplayManager.ClearCell(oldCoordinates, true); Destroy(gameObject); } } } } }