You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
2.5 KiB

using BansheeGz.BGSpline.Components;
using BansheeGz.BGSpline.Curve;
using UnityEngine;
namespace BansheeGz.BGSpline.Example
{
// Testing creating custom fields from scratch at runtime
public class BGTestCurveRuntimeCustomFields : MonoBehaviour
{
private const string SpeedFieldName = "speed";
private const string DelayFieldName = "delay";
private const float Width = .02f;
public Transform ObjectToMove;
public Material LineRendererMaterial;
// Use this for initialization
void Start()
{
//move object
var translateObject = gameObject.AddComponent<BGCcCursorObjectTranslate>();
translateObject.ObjectToManipulate = ObjectToMove;
//move cursor
var changeCursor = gameObject.AddComponent<BGCcCursorChangeLinear>();
//add line renderer
gameObject.AddComponent<BGCcVisualizationLineRenderer>();
var lineRenderer = gameObject.GetComponent<LineRenderer>();
lineRenderer.sharedMaterial = LineRendererMaterial;
#if UNITY_5_5 || UNITY_5_6
lineRenderer.startWidth = lineRenderer.endWidth = Width;
#else
lineRenderer.SetWidth(Width, Width);
#endif
//set up curve
var curve = changeCursor.Curve;
curve.Closed = true;
curve.Mode2D = BGCurve.Mode2DEnum.XY;
curve.PointsMode = BGCurve.PointsModeEnum.GameObjectsTransform;
//add points
curve.AddPoint(new BGCurvePoint(curve, new Vector2(-5, 0)));
curve.AddPoint(new BGCurvePoint(curve, new Vector2(0, 5), BGCurvePoint.ControlTypeEnum.BezierSymmetrical, new Vector2(-5, 0), new Vector2(5, 0)));
curve.AddPoint(new BGCurvePoint(curve, new Vector2(5, 0)));
//setup custom fields
//---speed
changeCursor.SpeedField = NewFloatField(changeCursor, SpeedFieldName, 5, 10, 15);
//---delay
changeCursor.DelayField = NewFloatField(changeCursor, DelayFieldName, 3, 1, 2);
}
//Add field with values
private static BGCurvePointField NewFloatField(BGCcCursorChangeLinear changeCursor, string fieldName, params float[] values)
{
var curve = changeCursor.Curve;
var field = curve.AddField(fieldName, BGCurvePointField.TypeEnum.Float);
for (var i = 0; i < values.Length; i++) curve[i].SetFloat(fieldName, values[i]);
return field;
}
}
}