private void TryChangeState(TechTreeNodeState fromState, TechTreeNodeState toState)
    {
        if (state != fromState)
        {
            return;
        }

        state = toState;
        if (onStateChanged != null)
        {
            onStateChanged(toState);
        }
    }
 private void OnNodeStateChanged(TechTreeNodeState state)
 {
     gameObject.SetActive(state != TechTreeNodeState.Hidden);
     if (_connectionLine != null)
     {
         _connectionLine.SetActive(state != TechTreeNodeState.Hidden);
     }
     if (_readyIcon != null)
     {
         _readyIcon.SetActive(state == TechTreeNodeState.Researched);
     }
     if (_clockIcon != null)
     {
         _clockIcon.SetActive(state == TechTreeNodeState.InProcess);
     }
     // Todo: visually show research states
 }
 public void SetInitialState(TechTreeNodeState initialState)
 {
     TryChangeState(TechTreeNodeState.Hidden, initialState);
 }