Exemplo n.º 1
0
    public void CheckOutline()
    {
        if (outlinerOptimizationCounter >= 10 && isOutlineCheckActive)
        {
            if (!BIWUtils.IsPointerOverUIElement() && !BIWUtils.IsPointerOverMaskElement(BIWSettings.GIZMOS_LAYER))
            {
                BIWEntity entity = raycastController.GetEntityOnPointer();
                RemoveEntitiesOutlineOutsidePointerOrUnselected();

                if (entity != null && !entity.IsSelected)
                {
                    OutlineEntity(entity);
                }
            }
            else
            {
                CancelUnselectedOutlines();
            }

            outlinerOptimizationCounter = 0;
        }
        else
        {
            outlinerOptimizationCounter++;
        }
    }
Exemplo n.º 2
0
    void OnInputMouseDown(int buttonID, Vector3 position)
    {
        lastMousePosition = position;

        if (buttonID == 1)
        {
            mouseSecondaryBtnPressed = true;
            freeCameraController.StartDectectingMovement();
        }

        if (buttonID != 0)
        {
            return;
        }

        dragStartedPoint = raycastController.GetFloorPointAtMouse(position);

        if (isSnapActive)
        {
            dragStartedPoint.x = Mathf.Round(dragStartedPoint.x);
            dragStartedPoint.z = Mathf.Round(dragStartedPoint.z);
        }

        if (isPlacingNewObject)
        {
            return;
        }

        var entity = raycastController.GetEntityOnPointer();

        if ((entity == null ||
             (entity != null && !entity.IsSelected)) &&
            !BIWUtils.IsPointerOverMaskElement(BIWSettings.GIZMOS_LAYER))
        {
            isSquareMultiSelectionInputActive = true;
            outlinerController.SetOutlineCheckActive(false);
        }

        mouseMainBtnPressed = true;
        freeCameraController.SetCameraCanMove(false);
    }
Exemplo n.º 3
0
    private void OnInputMouseDrag(int buttonId, Vector3 mousePosition, float axisX, float axisY)
    {
        if (Vector3.Distance(lastMousePosition, mousePosition) <= BIWSettings.MOUSE_THRESHOLD_FOR_DRAG && !isMouseDragging)
        {
            return;
        }

        isMouseDragging = true;
        if (buttonId != 0 ||
            selectedEntities.Count <= 0 ||
            BIWUtils.IsPointerOverMaskElement(BIWSettings.GIZMOS_LAYER) ||
            isSquareMultiSelectionInputActive)
        {
            return;
        }

        if (!isDraggingStarted)
        {
            StarDraggingSelectedEntities();
        }

        if (canDragSelectedEntities)
        {
            Vector3 currentPoint          = raycastController.GetFloorPointAtMouse(mousePosition);
            Vector3 initialEntityPosition = editionGO.transform.position;

            if (isSnapActive)
            {
                currentPoint          = GetPositionRoundedToSnapFactor(currentPoint);
                initialEntityPosition = GetPositionRoundedToSnapFactor(initialEntityPosition);
            }

            Vector3 move        = currentPoint - dragStartedPoint;
            Vector3 destination = initialEntityPosition + move;
            editionGO.transform.position = destination;
            dragStartedPoint             = currentPoint;
        }
    }