Beispiel #1
0
        private static void DrawOneChunk(SplineBase spline, ChunkLinker.Chunk chunk, PointsOnSplineExtension points, float offset, bool isSelected)
        {
            float a     = chunk.PositionA(points);
            float b     = chunk.PositionB(points);
            Color color = chunk.Color;

            if (!isSelected)
            {
                color.a *= 0.6f;
            }

            float min    = spline.ConvertPathUnit(spline.MinPos, SplineBase.PositionUnits.PathUnits, points.PositionUnits);
            float max    = spline.ConvertPathUnit(spline.MaxPos, SplineBase.PositionUnits.PathUnits, points.PositionUnits);
            float lenght = spline.MaxUnit(points.PositionUnits);

            if (chunk.SamePosition())
            {
                b = a + lenght;
            }

            if (!spline.Looped)
            {
                if (chunk.SamePosition())
                {
                    DrawPathGizmo(spline, color, min, a, points.PositionUnits, offset);
                    DrawPathGizmo(spline, color, a, max, points.PositionUnits, offset);
                }
                else if (b < a)
                {
                    DrawPathGizmo(spline, color, a, max, points.PositionUnits, offset);
                    DrawPathGizmo(spline, color, min, b, points.PositionUnits, offset);
                }
                else
                {
                    DrawPathGizmo(spline, color, a, b, points.PositionUnits, offset);
                }
            }
            else
            {
                if (b < a)
                {
                    DrawPathGizmo(spline, color, min, b, points.PositionUnits, offset, false, true);
                    DrawPathGizmo(spline, color, a, lenght, points.PositionUnits, offset, true, false);
                }
                else
                {
                    DrawPathGizmo(spline, color, a, b, points.PositionUnits, offset);
                }
            }
        }
 private void UpdatePathUnits()
 {
     if (_previousPositionUnit != _target.PositionUnits)
     {
         SplineBase spline = _target.SplineBase;
         for (int i = 0; i < _target.WaypointsCount; ++i)
         {
             SerializedProperty element      = _waypointList.serializedProperty.GetArrayElementAtIndex(i);
             SerializedProperty pathPosition = element.GetPropertie(nameof(PointsOnSplineExtension.Waypoint.PathPosition));
             float currentPathPosition       = pathPosition.floatValue;
             float newPos = spline.ConvertPathUnit(currentPathPosition, _previousPositionUnit, _target.PositionUnits);
             pathPosition.floatValue = newPos;
         }
         this.ApplyModification();
     }
     _previousPositionUnit = _target.PositionUnits;
 }