Exemplo n.º 1
0
        internal void SetWaypointsLengths(Path p, int subdivisions)
        {
            int length = p.wps.Length;

            float[] numArray = new float[length];
            numArray[0] = 0f;
            DG.Tweening.Plugins.Core.PathCore.LinearDecoder.ControlPoint[] controlPoints = new DG.Tweening.Plugins.Core.PathCore.LinearDecoder.ControlPoint[2];
            Vector3[] wps = new Vector3[2];
            for (int i = 1; i < length; i++)
            {
                controlPoints[0].a = (i == 1) ? p.controlPoints[0].a : p.wps[i - 2];
                wps[0]             = p.wps[i - 1];
                wps[1]             = p.wps[i];
                controlPoints[1].a = (i == (length - 1)) ? p.controlPoints[1].a : p.wps[i + 1];
                float   num3 = 0f;
                float   num4 = 1f / ((float)subdivisions);
                Vector3 b    = this.GetPoint(0f, wps, p, controlPoints);
                for (int j = 1; j < (subdivisions + 1); j++)
                {
                    float   perc = num4 * j;
                    Vector3 a    = this.GetPoint(perc, wps, p, controlPoints);
                    num3 += Vector3.Distance(a, b);
                    b     = a;
                }
                numArray[i] = num3;
            }
            p.wpLengths = numArray;
        }
Exemplo n.º 2
0
        public Path CloneIncremental(int loopIncrement)
        {
            if (this._incrementalClone != null)
            {
                if (this._incrementalIndex == loopIncrement)
                {
                    return(this._incrementalClone);
                }
                this._incrementalClone.Destroy();
            }
            int     length = this.wps.Length;
            Vector3 vector = this.wps[length - 1] - this.wps[0];

            Vector3[] vectorArray = new Vector3[this.wps.Length];
            for (int i = 0; i < length; i++)
            {
                vectorArray[i] = this.wps[i] + (vector * loopIncrement);
            }
            int num2 = this.controlPoints.Length;

            DG.Tweening.Plugins.Core.PathCore.LinearDecoder.ControlPoint[] pointArray = new DG.Tweening.Plugins.Core.PathCore.LinearDecoder.ControlPoint[num2];
            for (int j = 0; j < num2; j++)
            {
                pointArray[j] = this.controlPoints[j] + ((vector * loopIncrement));
            }
            Vector3[] vectorArray2 = null;
            if (this.nonLinearDrawWps != null)
            {
                int num5 = this.nonLinearDrawWps.Length;
                vectorArray2 = new Vector3[num5];
                for (int k = 0; k < num5; k++)
                {
                    vectorArray2[k] = this.nonLinearDrawWps[k] + (vector * loopIncrement);
                }
            }
            this._incrementalClone      = new Path();
            this._incrementalIndex      = loopIncrement;
            this._incrementalClone.type = this.type;
            this._incrementalClone.subdivisionsXSegment = this.subdivisionsXSegment;
            this._incrementalClone.subdivisions         = this.subdivisions;
            this._incrementalClone.wps           = vectorArray;
            this._incrementalClone.controlPoints = pointArray;
            if (DOTween.isUnityEditor)
            {
                DOTween.GizmosDelegates.Add(new TweenCallback(this._incrementalClone.Draw));
            }
            this._incrementalClone.length           = this.length;
            this._incrementalClone.wpLengths        = this.wpLengths;
            this._incrementalClone.timesTable       = this.timesTable;
            this._incrementalClone.lengthsTable     = this.lengthsTable;
            this._incrementalClone._decoder         = this._decoder;
            this._incrementalClone.nonLinearDrawWps = vectorArray2;
            this._incrementalClone.targetPosition   = this.targetPosition;
            this._incrementalClone.lookAtPosition   = this.lookAtPosition;
            this._incrementalClone.isFinalized      = true;
            return(this._incrementalClone);
        }