/// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="selectReason">
        /// If there were any objects which were selected, this specifies the selection reason.
        /// </param>
        /// <param name="objectsWhichWereSelected">
        /// The objects which were selected. If the select reason is 'None', this list is empty.
        /// This can be null or empty when the select reason is 'None'.
        /// </param>
        /// <param name="deselectReason">
        /// If there were any objects which were deselected, this secifies the reason why they
        /// were deselected.
        /// </param>
        /// <param name="objectsWhichWereDeselected">
        /// The objects which were deselected. If the select reason is 'None', this list is empty.
        /// This can be null or empty when the deselect reason is 'None'.
        /// </param>
        /// <param name="undoRedoSnapshot">
        /// If the object selection was changed because of an Undo/Redo operation, this has to point
        /// to a snapshot instance which represents the state of the object selection before being
        /// modified. Otherwise, this has to be null.
        /// </param>
        public ObjectSelectionChangedEventArgs(ObjectSelectReason selectReason, List <GameObject> objectsWhichWereSelected,
                                               ObjectDeselectReason deselectReason, List <GameObject> objectsWhichWereDeselected,
                                               ObjectSelectionSnapshot undoRedoSnapshot = null)
        {
            _selectReason = selectReason;
            if (objectsWhichWereSelected != null)
            {
                _objectsWhichWereSelected = new List <GameObject>(objectsWhichWereSelected);
            }
            else
            {
                _objectsWhichWereSelected = new List <GameObject>();
            }

            _deselectReason = deselectReason;
            if (objectsWhichWereDeselected != null)
            {
                _objectsWhichWereDeselected = new List <GameObject>(objectsWhichWereDeselected);
            }
            else
            {
                _objectsWhichWereDeselected = new List <GameObject>();
            }

            if (_selectReason == ObjectSelectReason.Undo || _selectReason == ObjectSelectReason.Redo ||
                _deselectReason == ObjectDeselectReason.Undo || _deselectReason == ObjectDeselectReason.Redo)
            {
                _undoRedoSnapshot = undoRedoSnapshot;
            }
        }
 public ObjectSelectEventArgs(ObjectSelectReason selectReason)
 {
     _selectReason = selectReason;
 }
 public ObjectPreSelectCustomizeInfo(List <GameObject> toBeSelected, ObjectSelectReason selectReason)
 {
     _toBeSelected = new List <GameObject>(toBeSelected);
     _selectRason  = selectReason;
 }