// 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); } } }
// Start is called before the first frame update void Start() { _selectionStateMachine = SelectionStateMachine.GetInstance(TerrainTileMap, ObsticleTileMap, MouseTileMap, HighlightTile, SelectedTile); }