Skip to content

Commit

Permalink
Fixed direct point manipulation, minor API rename to make cp updates …
Browse files Browse the repository at this point in the history
…clearer
  • Loading branch information
crener committed Oct 3, 2020
1 parent ae83350 commit d1be7ba
Show file tree
Hide file tree
Showing 34 changed files with 191 additions and 168 deletions.
2 changes: 1 addition & 1 deletion Assets/Crener.Spline/BaseSpline/BaseSpline2D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public override void RemoveControlPoint(int index)
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
public virtual void UpdateControlPoint(int index, float2 point, SplinePoint mode)
public virtual void UpdateControlPointLocal(int index, float2 point, SplinePoint mode)
{
Assert.IsTrue(index <= ControlPointCount);

Expand Down
15 changes: 13 additions & 2 deletions Assets/Crener.Spline/BaseSpline/BaseSpline3D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,22 @@ public override void RemoveControlPoint(int index)
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
public virtual void UpdateControlPoint(int index, float3 point, SplinePoint mode)
public virtual void UpdateControlPointWorld(int index, float3 point, SplinePoint mode)
{
UpdateControlPointLocal(index, ConvertToLocalSpace(point), mode);
}

/// <summary>
/// Update an existing control points data
/// </summary>
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
public virtual void UpdateControlPointLocal(int index, float3 point, SplinePoint mode)
{
Assert.IsTrue(index <= ControlPointCount);

Points[index] = ConvertToLocalSpace(point);
Points[index] = point;
RecalculateLengthBias();
}

Expand Down
9 changes: 7 additions & 2 deletions Assets/Crener.Spline/BaseSpline/BaseSpline3DPlane.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,14 @@ public float3 GetControlPoint3DWorld(int i)
return Convert2Dto3D(GetControlPoint2DLocal(i), true);
}

public void UpdateControlPoint(int index, float3 point, SplinePoint mode)
public void UpdateControlPointWorld(int index, float3 point, SplinePoint mode)
{
base.UpdateControlPoint(index, Convert3Dto2D(point), mode);
base.UpdateControlPointLocal(index, Convert3Dto2D(point), mode);
}

public void UpdateControlPointLocal(int index, float3 point, SplinePoint mode)
{
base.UpdateControlPointLocal(index, Convert3Dto2D(point, false), mode);
}

public void MoveControlPoints(float3 delta)
Expand Down
2 changes: 1 addition & 1 deletion Assets/Crener.Spline/BezierSpline/BezierSpline2DSimple.cs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public override void AddControlPoint(float2 point)
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
public override void UpdateControlPoint(int index, float2 point, SplinePoint mode)
public override void UpdateControlPointLocal(int index, float2 point, SplinePoint mode)
{
Assert.IsTrue(index <= ControlPointCount);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ private void GeneratePrePost(int existingIndex, out float2 lastPost, out float2
point.y + math.cos(-angle));
}

public void UpdateControlPoint(int index, float2 point, SplinePointVariance mode)
public void UpdateControlPointLocal(int index, float2 point, SplinePointVariance mode)
{
#if UNITY_EDITOR
Assert.IsTrue(index <= ControlPointCount);
Expand Down
4 changes: 2 additions & 2 deletions Assets/Crener.Spline/BezierSpline/BezierSpline3DSimple.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public override void AddControlPoint(float3 point)
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
public override void UpdateControlPoint(int index, float3 point, SplinePoint mode)
public override void UpdateControlPointWorld(int index, float3 point, SplinePoint mode)
{
Assert.IsTrue(index <= ControlPointCount);

Expand All @@ -113,7 +113,7 @@ public override void UpdateControlPoint(int index, float3 point, SplinePoint mod
/// <param name="mode">type of point to update</param>
public void UpdateControlPointFromWorld(int index, float3 point, SplinePoint mode)
{
UpdateControlPoint(index, ConvertToLocalSpace(point), mode);
UpdateControlPointWorld(index, ConvertToLocalSpace(point), mode);
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions Assets/Crener.Spline/Common/Interfaces/ISpline2D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public interface ISimpleSpline2D : ISpline2D
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
void UpdateControlPoint(int index, float2 point, SplinePoint mode);
void UpdateControlPointLocal(int index, float2 point, SplinePoint mode);

/// <summary>
/// Gets the given point from a point segment
Expand Down Expand Up @@ -98,7 +98,7 @@ public interface ISimpleSpline2DVariance : ISpline2D
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
void UpdateControlPoint(int index, float2 point, SplinePointVariance mode);
void UpdateControlPointLocal(int index, float2 point, SplinePointVariance mode);

/// <summary>
/// Gets the given point from a point segment
Expand Down
4 changes: 2 additions & 2 deletions Assets/Crener.Spline/Common/Interfaces/ISpline2DEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ public interface ISpline2DEditor : ISpline2D
/// Update an existing control points data
/// </summary>
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="point">location of the point in world space</param>
/// <param name="mode">type of point to update</param>
void UpdateControlPoint(int index, float2 point, SplinePoint mode);
void UpdateControlPointLocal(int index, float2 point, SplinePoint mode);


/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion Assets/Crener.Spline/Common/Interfaces/ISpline3D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public interface ISimpleSpline3D : ISpline3D
/// <param name="index">control point index</param>
/// <param name="point">location of the point</param>
/// <param name="mode">type of point to update</param>
void UpdateControlPoint(int index, float3 point, SplinePoint mode);
void UpdateControlPointWorld(int index, float3 point, SplinePoint mode);

/// <summary>
/// Gets the given point from a point segment
Expand Down
9 changes: 8 additions & 1 deletion Assets/Crener.Spline/Common/Interfaces/ISpline3DEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,15 @@ public interface ISpline3DEditor : ISpline3D
/// <param name="index">control point index</param>
/// <param name="point">location of the point in world space</param>
/// <param name="mode">type of point to update</param>
void UpdateControlPoint(int index, float3 point, SplinePoint mode);
void UpdateControlPointWorld(int index, float3 point, SplinePoint mode);

/// <summary>
/// Update an existing control points data in local space
/// </summary>
/// <param name="index">control point index</param>
/// <param name="point">location of the point in local space</param>
/// <param name="mode">type of point to update</param>
void UpdateControlPointLocal(int index, float3 point, SplinePoint mode);

/// <summary>
/// Move all points by <paramref name="delta"/> amount
Expand Down
4 changes: 2 additions & 2 deletions Assets/Crener.Spline/Editor/2D/Base2DEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ protected void OnInspectorGUI(ISpline2DEditor spline)
currentPoint = EditorGUILayout.Vector2Field("Point", currentPoint);
if(EditorGUI.EndChangeCheck())
{
spline.UpdateControlPoint(m_editControlPoint.Value, currentPoint, SplinePoint.Point);
spline.UpdateControlPointLocal(m_editControlPoint.Value, currentPoint, SplinePoint.Point);
SceneView.RepaintAll();
}

Expand Down Expand Up @@ -230,7 +230,7 @@ protected void RenderControlPoints(ISpline2DEditor spline)

float3 origin = ((MonoBehaviour)spline).transform.position;
float2 newPoint = new float2(pos.x, pos.y) - origin.xy;
spline.UpdateControlPoint(i, newPoint, SplinePoint.Point);
spline.UpdateControlPointLocal(i, newPoint, SplinePoint.Point);

SceneView.RepaintAll();
}
Expand Down
20 changes: 10 additions & 10 deletions Assets/Crener.Spline/Editor/2D/BezierSpline2DSimpleEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ protected void RenderControlPoints()
UpdateOppositePoint(postMagnitude, point, newPos, i, SplinePoint.Post);
}

bezierSpline.UpdateControlPoint(i, newPos, SplinePoint.Pre);
bezierSpline.UpdateControlPointLocal(i, newPos, SplinePoint.Pre);
break;
}
case SplineEditMode.Mirror:
Expand All @@ -118,11 +118,11 @@ protected void RenderControlPoints()
UpdateOppositePoint(preMagnitude, point, newPos, i, SplinePoint.Post);
}

bezierSpline.UpdateControlPoint(i, newPos, SplinePoint.Pre);
bezierSpline.UpdateControlPointLocal(i, newPos, SplinePoint.Pre);
break;
}
case SplineEditMode.Free:
bezierSpline.UpdateControlPoint(i, newPos, SplinePoint.Pre);
bezierSpline.UpdateControlPointLocal(i, newPos, SplinePoint.Pre);
break;
default:
throw new ArgumentOutOfRangeException();
Expand All @@ -146,16 +146,16 @@ protected void RenderControlPoints()
EditorUtility.SetDirty(bezierSpline);

float2 newPoint = new float2(pos.x, pos.y) - origin.xy;
bezierSpline.UpdateControlPoint(i, newPoint, SplinePoint.Point);
bezierSpline.UpdateControlPointLocal(i, newPoint, SplinePoint.Point);

if(m_editMoveWithTrans)
{
//move the other points relative to this
float2 delta = newPoint - point;
if(preExists)
bezierSpline.UpdateControlPoint(i, bezierSpline.GetControlPoint(i, SplinePoint.Pre) + delta, SplinePoint.Pre);
bezierSpline.UpdateControlPointLocal(i, bezierSpline.GetControlPoint(i, SplinePoint.Pre) + delta, SplinePoint.Pre);
if(postExists)
bezierSpline.UpdateControlPoint(i, bezierSpline.GetControlPoint(i, SplinePoint.Post) + delta, SplinePoint.Post);
bezierSpline.UpdateControlPointLocal(i, bezierSpline.GetControlPoint(i, SplinePoint.Post) + delta, SplinePoint.Post);
}

SceneView.RepaintAll();
Expand Down Expand Up @@ -189,7 +189,7 @@ protected void RenderControlPoints()
UpdateOppositePoint(preMagnitude, point, newPos, i, SplinePoint.Pre);
}

bezierSpline.UpdateControlPoint(i, newPos, SplinePoint.Post);
bezierSpline.UpdateControlPointLocal(i, newPos, SplinePoint.Post);
break;
}
case SplineEditMode.Mirror:
Expand All @@ -200,11 +200,11 @@ protected void RenderControlPoints()
UpdateOppositePoint(postMagnitude, point, newPos, i, SplinePoint.Pre);
}

bezierSpline.UpdateControlPoint(i, newPos, SplinePoint.Post);
bezierSpline.UpdateControlPointLocal(i, newPos, SplinePoint.Post);
break;
}
case SplineEditMode.Free:
bezierSpline.UpdateControlPoint(i, newPos, SplinePoint.Post);
bezierSpline.UpdateControlPointLocal(i, newPos, SplinePoint.Post);
break;
default:
throw new ArgumentOutOfRangeException();
Expand Down Expand Up @@ -244,7 +244,7 @@ private void UpdateOppositePoint(float magnitude, float2 center, float2 newPos,
float2 updatedPoint = new float2(
center.x + (math.sin(-angle) * magnitude),
center.y + (math.cos(-angle) * magnitude));
bezierSpline.UpdateControlPoint(i, updatedPoint, pointType);
bezierSpline.UpdateControlPointLocal(i, updatedPoint, pointType);
}
}
}
Loading

0 comments on commit d1be7ba

Please sign in to comment.