// 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); } } }
public static SelectionStateMachine GetInstance(Tilemap terrainMap, Tilemap objectMap, Tilemap uiMap, TileBase HighlightTile, TileBase SelectedTile) { if (_instance == null) { _instance = new SelectionStateMachine(terrainMap, objectMap, uiMap, HighlightTile, SelectedTile); } return(_instance); }
public NoUserSelectionState(SelectionStateMachine machine, Tilemap map) : base(machine, map) { }
public SelectionState(SelectionStateMachine machine, Tilemap mosueMap) { StateMachine = machine; MouseTileMap = mosueMap; }
// Start is called before the first frame update void Start() { _selectionStateMachine = SelectionStateMachine.GetInstance(TerrainTileMap, ObsticleTileMap, MouseTileMap, HighlightTile, SelectedTile); }
public UserSelectionState(SelectionStateMachine machine, Tilemap map, Tilemap objects, Tilemap terrain) : base(machine, map) { TerrainMap = terrain; ObsticleMap = objects; ResetSelectedTile(); }