Exemple #1
0
        void SetTimeToLengthTables(TweenPlugPath p, int subdivisions)
        {
            TweenPlugPathPoint prevP = _cachePoint1, currP = _cachePoint2;

            var ptCount          = p.pathPointCount;

            float pathLen = 0;
            float incr           = 1f / subdivisions;

            float[] timesTable   = new float[subdivisions];
            float[] lengthsTable = new float[subdivisions];
            GetPoint(prevP, 0, p.wps, p);
            for (int i = 1; i < subdivisions + 1; ++i)
            {
                float perc = incr * i;
                GetPoint(currP, perc, p.wps, p);
                pathLen += TweenPlugPathPoint.Distance(currP, prevP, ptCount);
                prevP.Copy(currP, ptCount);
                timesTable[i - 1]   = perc;
                lengthsTable[i - 1] = pathLen;
            }

            // Assign
            p.length       = pathLen;
            p.timesTable   = timesTable;
            p.lengthsTable = lengthsTable;
        }
Exemple #2
0
        // Linear exception: also sets waypoints lengths and doesn't set lengthsTable since it's useless
        void SetTimeToLengthTables(TweenPlugPath p, int subdivisions)
        {
            float pathLen = 0;
            int   wpsLen  = p.wps.Length;
            var   ptCount = p.pathPointCount;
            var   prevP   = p.wps[0];

            for (int i = 1; i < wpsLen; i++)
            {
                var   currP = p.wps[i];
                float dist  = TweenPlugPathPoint.Distance(currP, prevP, ptCount);
                pathLen += dist;
                prevP    = currP;
            }

            // Assign
            p.length       = pathLen;
            p.lengthsTable = null;
            p.timesTable   = null;
        }
Exemple #3
0
        void SetPathLength(TweenPlugPath p, int subdivisions)
        {
            TweenPlugPathPoint prevP = _cachePoint1, currP = _cachePoint2;

            var ptCount = p.pathPointCount;

            float pathLen = 0;
            float incr  = 1f / subdivisions;

            GetPoint(prevP, 0, p.wps, p);
            for (int i = 1; i < subdivisions + 1; ++i)
            {
                float perc = incr * i;
                GetPoint(currP, perc, p.wps, p);
                pathLen += TweenPlugPathPoint.Distance(currP, prevP, ptCount);
                prevP.Copy(currP, ptCount);
            }

            // Assign
            p.length       = pathLen;
            p.timesTable   = null;
            p.lengthsTable = null;
        }