Example #1
0
    private void CameraControl()
    {
        _pCamera.MoveCamera(_im.camMovementAxes * _im.camMovementSpd);
        _pCamera.RotateCamera(_im.camRotationAxes * _im.camRotationSpd);

        Vector3 innerLimits = _grid.nodeSize * _im.cameraGridClamp;

        transform.position = _grid.ClampWorldPosToGrid(transform.position, innerLimits);
    }
Example #2
0
    public void RefreshData(Camera cam, int floor, bool btnPress, bool btnUp)
    {
        GridGenerator grid = GridGenerator.Singleton;

        mouseCurrentScreenPos = Input.mousePosition;

        float height  = grid.nodeSize.y * floor;
        Plane xzPlane = new Plane(Vector3.up, new Vector3(0, height, 0));
        Ray   ray     = cam.ScreenPointToRay(mouseCurrentScreenPos);

        Vector3?planePos;

        if (xzPlane.Raycast(ray, out float distance))
        {
            planePos = ray.GetPoint(distance);

            RaycastHit rayHit;
            if (Physics.Raycast(ray, out rayHit, distance, grid.layerObstacles))
            {
                obstacle = rayHit.transform.gameObject;
            }
            else
            {
                obstacle = null;
            }
            if (Physics.Raycast(ray, out rayHit, distance, grid.layerWalls))
            {
                wall = rayHit.transform.gameObject;
            }
            else
            {
                wall = null;
            }
            if (Physics.Raycast(ray, out rayHit, distance, grid.layerUnits))
            {
                unit = rayHit.transform.gameObject;
            }
            else
            {
                unit = null;
            }
        }
        else
        {
            planePos = null;
        }

        if (planePos != null)
        {
            Vector3 pos = (Vector3)planePos;
            gridNode = grid.GridNodeFromWorldPosition(pos);

            Vector3 gridPos = grid.ClampWorldPosToGrid((Vector3)planePos, Vector3.zero);
            outsideGrid         = (planePos != gridPos);
            mouseCurrentGridPos = gridPos;
        }
        else
        {
            outsideGrid = true;
            gridNode    = null;
            obstacle    = null;
            wall        = null;
            unit        = null;
        }

        if (!btnPress || btnUp)
        {
            performingSelectionBox = false;
            mouseLastScreenPos     = mouseCurrentScreenPos;
            mouseLastGridPos       = mouseCurrentGridPos;
        }
        else
        {
            performingSelectionBox = true;
        }
    }