/// <summary> /// Generate some curve demo data /// </summary> void DemoData1() { var curve = new BezierCurveData(); curve.points = new Vector3[4] { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(2, 2, 2), new Vector3(4, 4, 4) }; curveDatas.Add(curve); }
private Vector3 GetPointOnBezierCurve(int pCurveIndex, float pPercentThroughCurve) { Vector3 positionOnCurve; BezierCurveData currentCurve = bezierCurveControlPoints[pCurveIndex]; float percentLeftOnCurve = 1 - pPercentThroughCurve; //formula for getting a position on a bezier curve positionOnCurve = Mathf.Pow(percentLeftOnCurve, 3) * currentCurve.controlPoints[0].position + 3 * Mathf.Pow(percentLeftOnCurve, 2) * pPercentThroughCurve * currentCurve.controlPoints[1].position + 3 * percentLeftOnCurve * Mathf.Pow(pPercentThroughCurve, 2) * currentCurve.controlPoints[2].position + Mathf.Pow(pPercentThroughCurve, 3) * currentCurve.controlPoints[3].position; return(positionOnCurve); }
public void Load(BezierCurveData bezierCurveData) { List <BezierPoint> bezierPoints = bezierCurveData.points; for (int i = 0; i < bezierPoints.Count; i++) { AddAnchorPoint(bezierPoints [i]); } connectedCurve = bezierCurveData.connectedCurve; handleSize = bezierCurveData.handleSize; snapSize = bezierCurveData.snapSize; sampleRate = bezierCurveData.sampleRate; }
public BezierCurveData Save(string assetPath) { BezierCurveData bezierCurveData = ScriptableObject.CreateInstance <BezierCurveData> (); bezierCurveData.points = new List <BezierPoint> (points); bezierCurveData.connectedCurve = connectedCurve; bezierCurveData.handleSize = handleSize; bezierCurveData.snapSize = snapSize; bezierCurveData.sampleRate = sampleRate; AssetDatabase.CreateAsset(bezierCurveData, assetPath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); return(AssetDatabase.LoadAssetAtPath <BezierCurveData> (assetPath)); }
private void DrawInspectorSettings() { GUIStyle style = new GUIStyle(); style.fontStyle = FontStyle.Bold; showSettings = EditorGUILayout.Foldout(showSettings, "Show settings"); if (showSettings) { GUILayout.Label("Debug", style); GUILayout.Label(string.Format("Points on curve: {0}", numberOfSampledPointsOnCurve)); GUILayout.BeginHorizontal(); showCurve = GUILayout.Toggle(showCurve, "Curve"); showSamplePoints = GUILayout.Toggle(showSamplePoints, "Sample points"); showNormals = GUILayout.Toggle(showNormals, "Normals"); showTangents = GUILayout.Toggle(showTangents, "Tangents"); GUILayout.EndHorizontal(); GUILayout.Label("Load/Save", style); EditorGUILayout.BeginHorizontal(); bezierCurveData = (BezierCurveData)EditorGUILayout.ObjectField("Bezier curve", bezierCurveData, typeof(BezierCurveData), false); if (GUILayout.Button("Load", GUILayout.Width(40), GUILayout.Height(15))) { LoadCurve(bezierCurveData); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); bezierCurveDataName = EditorGUILayout.TextField("Bezier curve name", bezierCurveDataName); if (GUILayout.Button("Save", GUILayout.Width(40), GUILayout.Height(15))) { SaveCurve(bezierCurveDataName); } EditorGUILayout.EndHorizontal(); GUILayout.Label("Settings", style); DrawDefaultInspector(); } }
/// <summary> /// Generate some curve demo data /// </summary> void DemoData1() { var curve = new BezierCurveData(); curve.points = new Vector3[4] { new Vector3(0, 0, 0), new Vector3(10, 0, 0), new Vector3(20, 5f, 10), new Vector3(30, 10, 30) }; curveDatas.Add(curve); curve = new BezierCurveData(); curve.points = new Vector3[4] { new Vector3(30, 10, 30), new Vector3(40, 20, 40), new Vector3(40, 20, 40), new Vector3(60, -10, 100) }; curveDatas.Add(curve); }
private void LoadCurve(BezierCurveData bezierCurveData) { RemoveAllPoints(); bezierCurve.Load(bezierCurveData); }