Beispiel #1
0
        /// <summary> Осуществляет вычисление координат для передвижения </summary>
        /// <param name="moveParamsArg"> Параметры движения, которое нужно выполнить </param>
        /// <param name="posArg"> Текущая позиция элемента </param>
        /// <returns> Возвращает новую точку на которую нужно переместить объект </returns>
        public Vector3 Move(IMovable itemArg, Vector3 moveParamsArg)
        {
            Vector3    positionItemFact = itemArg.PositionFact;
            Vector3Int positionItem     = itemArg.Position;

            Vector3    moveParamsFact = moveParamsArg;
            Vector3Int moveParams     = Converter.VectorMove(moveParamsArg);

            Vector3    newPositionFact = Vector3.zero;
            Vector3Int newPosition     = Vector3Int.zero;

            if (IsCanMove(positionItem, moveParams))
            {
                newPositionFact.x = positionItemFact.x + moveParamsFact.x;
                newPositionFact.y = positionItemFact.y + moveParamsFact.y;
                newPositionFact.z = positionItemFact.z + moveParamsFact.z;

                if (itemArg.IsObstruction)
                {
                    newPosition.x = positionItem.x + moveParams.x;
                    newPosition.y = positionItem.y + moveParams.y;
                    newPosition.z = positionItem.z + moveParams.z;
                    _cObstructionReplace.Replace(positionItem, newPosition);
                }
                return(newPositionFact);
            }
            return(positionItemFact);
        }
        /// <summary> Осуществляет вычисление координат для передвижения </summary>
        /// <param name="moveParamsArg"> Параметры движения, которое нужно выполнить </param>
        /// <param name="posArg"> Текущая позиция элемента </param>
        /// <returns> Возвращает новую точку на которую нужно переместить объект </returns>
        public Vector3 Move(IMovable itemArg, Vector3 moveParamsArg)
        {
            Vector3    positionItemFact = itemArg.PositionFact;
            Vector3Int positionItem     = itemArg.Position;

            Vector3    moveParamsFact = moveParamsArg;
            Vector3Int moveParams     = Converter.VectorMove(moveParamsArg);

            Vector3    newPositionFact = Vector3.zero;
            Vector3Int newPosition     = Vector3Int.zero;

            if (IsCanMove(positionItem, moveParams))
            {
                newPositionFact = CalculateSum(positionItemFact, moveParamsFact);
                if (itemArg.IsObstruction)
                {
                    newPosition = CalculateSum(positionItem, moveParams);
                    _cObstructionReplace.Replace(positionItem, newPosition);
                }
                return(newPositionFact);
            }
            return(positionItemFact);
        }