Пример #1
0
        public bool AddEntry(int numItems, PropLineTool.ItemPlacementInfo[] placementInfoArray, PropLineTool.ObjectMode objectMode, bool fenceMode, SegmentState segmentState)
        {
            bool _result = AddEntry(numItems, placementInfoArray, objectMode);

            undoList[latestEntryIndex].fenceMode   = fenceMode;
            undoList[latestEntryIndex].segmentInfo = segmentState.segmentInfo;

            return(_result);
        }
Пример #2
0
        public bool AddEntry(int numItems, PropLineTool.ItemPlacementInfo[] placementInfoArray, PropLineTool.ObjectMode objectMode)
        {
            if (objectMode == PropLineTool.ObjectMode.Undefined)
            {
                return(false);
            }
            if (numItems <= 0)
            {
                return(false);
            }
            if (placementInfoArray.Length <= 0)
            {
                return(false);
            }
            if (numItems > placementInfoArray.Length)
            {
                numItems = placementInfoArray.Length;
            }

            int _indexNewUndoEntry = actualEntryCount == 0 ? 0 : (latestEntryIndex + 1);

            if (_indexNewUndoEntry >= MAX_UNDO_COUNT)
            {
                _indexNewUndoEntry = _indexNewUndoEntry % MAX_UNDO_COUNT;
            }

            //only if class-based
            //setup if null
            //if (undoList[_indexNewUndoEntry] == null)
            //{
            //    undoList[_indexNewUndoEntry] = new UndoEntry();
            //}

            switch (objectMode)
            {
            case PropLineTool.ObjectMode.Props:
            {
                undoList[_indexNewUndoEntry].props = new PropSubEntry[numItems];
                for (int i = 0; i < numItems; i++)
                {
                    undoList[_indexNewUndoEntry].props[i].propPlacementInfo = SetPropPlacementInfo(placementInfoArray[i]);
                    undoList[_indexNewUndoEntry].props[i].stillExists       = true;
                }
                undoList[_indexNewUndoEntry].objectModeSegment = PropLineTool.ObjectMode.Props;
                break;
            }

            case PropLineTool.ObjectMode.Trees:
            {
                undoList[_indexNewUndoEntry].trees = new TreeSubEntry[numItems];

                for (int i = 0; i < numItems; i++)
                {
                    undoList[_indexNewUndoEntry].trees[i].treePlacementInfo = SetTreePlacementInfo(placementInfoArray[i]);
                    undoList[_indexNewUndoEntry].trees[i].stillExists       = true;
                }

                undoList[_indexNewUndoEntry].objectModeSegment = PropLineTool.ObjectMode.Trees;
                break;
            }

            default:
            {
                return(false);
            }
            }

            undoList[_indexNewUndoEntry].itemCount = numItems;

            latestEntryIndex = _indexNewUndoEntry;
            actualEntryCount++;

            CheckItemsStillExist();

            return(true);
        }