Totem.MoveTo C# (CSharp) Метод

MoveTo() приватный Метод

private MoveTo ( Vector3 direction ) : void
direction Vector3
Результат void
    public void MoveTo(Vector3 direction)
    {
        var origin = transform.position;

        var x = (int)Math.Floor(transform.position.x + direction.x);
        var z = (int)Math.Floor(transform.position.z + direction.z);
        float targetHeight;

        if (x >= 0 && x < TerrainGrid.Instance.sizeX &&
            z >= 0 && z < TerrainGrid.Instance.sizeZ)
        {
            targetHeight = TerrainGrid.GetHeightAt(x, z);
        }
        else
            throw new InvalidOperationException("Trying to move out of the terrain grid");

        var destination = new Vector3(x + 0.5f, targetHeight, z + 0.5f);

        if (Network.isServer)
            Cell = TerrainGrid.MoveTotem(origin, destination);

        TaskManager.Instance.WaitUntil(elapsedTime =>
        {
            if (disposed) return true;

            var step = Mathf.Clamp01(elapsedTime / TransitionDuration);

            var xzStep = JumpTimeCurve.Evaluate(step);
            var height = JumpHeightCurve.Evaluate(xzStep) + (targetHeight - origin.y) * xzStep;

            transform.position = new Vector3(Mathf.Lerp(origin.x, destination.x, xzStep), height + origin.y,
                                             Mathf.Lerp(origin.z, destination.z, xzStep));

            return step >= 1;
        });
    }