first commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Drawing;
|
||||
|
||||
namespace Drawing.Examples {
|
||||
/// <summary>Simple bezier curve editor</summary>
|
||||
[HelpURL("http://arongranberg.com/aline/documentation/stable/curveeditor.html")]
|
||||
public class CurveEditor : MonoBehaviour {
|
||||
List<CurvePoint> curves = new List<CurvePoint>();
|
||||
Camera cam;
|
||||
public Color curveColor;
|
||||
|
||||
class CurvePoint {
|
||||
public Vector2 position, controlPoint0, controlPoint1;
|
||||
}
|
||||
|
||||
void Awake () {
|
||||
cam = Camera.main;
|
||||
}
|
||||
|
||||
void Update () {
|
||||
// Add a new control point when clicking
|
||||
if (Input.GetKeyDown(KeyCode.Mouse0)) {
|
||||
curves.Add(new CurvePoint {
|
||||
position = (Vector2)Input.mousePosition,
|
||||
controlPoint0 = Vector2.zero,
|
||||
controlPoint1 = Vector2.zero,
|
||||
});
|
||||
}
|
||||
|
||||
// Keep adjusting the position of the control point while the mouse is pressed
|
||||
if (curves.Count > 0 && Input.GetKey(KeyCode.Mouse0) && ((Vector2)Input.mousePosition - curves[curves.Count - 1].position).magnitude > 2*2) {
|
||||
var point = curves[curves.Count - 1];
|
||||
point.controlPoint1 = (Vector2)Input.mousePosition - point.position;
|
||||
point.controlPoint0 = -point.controlPoint1;
|
||||
}
|
||||
|
||||
Render();
|
||||
}
|
||||
|
||||
void Render () {
|
||||
// Use a custom builder which renders even in standalone games
|
||||
// and in the editor even if gizmos are disabled.
|
||||
// Usually you would use the static Draw class instead.
|
||||
using (var draw = DrawingManager.GetBuilder(true)) {
|
||||
// Draw the curves in 2D using pixel coordinates
|
||||
using (draw.InScreenSpace(cam)) {
|
||||
// Draw a circle at each curve control point
|
||||
for (int i = 0; i < curves.Count; i++) {
|
||||
draw.xy.Circle((Vector3)curves[i].position, 2, Color.blue);
|
||||
}
|
||||
|
||||
// Draw each bezier curve segment
|
||||
for (int i = 0; i < curves.Count - 1; i++) {
|
||||
var p0 = curves[i].position;
|
||||
var p1 = p0 + curves[i].controlPoint1;
|
||||
var p3 = curves[i+1].position;
|
||||
var p2 = p3 + curves[i+1].controlPoint0;
|
||||
draw.Bezier((Vector3)p0, (Vector3)p1, (Vector3)p2, (Vector3)p3, curveColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user