示例#1
0
    // Update is called once per frame
    void Update()
    {
        //for some reason, Unity NULLs out my private variables some time
        //TODO: investigate why
        if (_selectionStateMachine == null)
        {
            _selectionStateMachine = SelectionStateMachine.GetInstance(TerrainTileMap, ObsticleTileMap, MouseTileMap, HighlightTile, SelectedTile);
        }

        if (HasMouseMoved() == true)
        {
            Vector2    mousePosition  = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector3Int mapPosition    = TerrainTileMap.WorldToCell(mousePosition);
            Vector3Int objectPosition = ObsticleTileMap.WorldToCell(mousePosition);

            if (TerrainTileMap.HasTile(mapPosition))
            {
                _selectionStateMachine.ProcessMouseMovement(mapPosition);
            }
        }
        if (Input.GetMouseButtonDown(ProgramConstants.MouseLeftClick) == true)
        {
            Vector2    mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector3Int mapPosition   = TerrainTileMap.WorldToCell(mousePosition);
            if (TerrainTileMap.HasTile(mapPosition))
            {
                _selectionStateMachine.ProcessMouseLeftClick(mapPosition);
            }
        }
    }
示例#2
0
 // Start is called before the first frame update
 void Start()
 {
     _selectionStateMachine = SelectionStateMachine.GetInstance(TerrainTileMap, ObsticleTileMap, MouseTileMap, HighlightTile, SelectedTile);
 }