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.
 
 
 
 
 
 

103 lines
4.5 KiB

using System;
using UnityEngine;
namespace BansheeGz.BGSpline.Curve
{
/// <summary> This is interface for one single curve's point</summary>
public interface BGCurvePointI
{
/// <summary> The Curve, this point is attached to </summary>
BGCurve Curve { get; }
//====================================================================
// system fields
//====================================================================
/// <summary> Local position. It's relative to curve's origin. All transformations are ignored</summary>
Vector3 PositionLocal { get; set; }
/// <summary> Local position. It's relative to curve's origin. All transformations are applied</summary>
Vector3 PositionLocalTransformed { get; set; }
/// <summary> World position.</summary>
Vector3 PositionWorld { get; set; }
/// <summary> Local position for first control (inbound). It's relative to point's position, all transformations are ignored</summary>
Vector3 ControlFirstLocal { get; set; }
/// <summary> Local position for first control (inbound). It's relative to point's position with all transformations applied</summary>
Vector3 ControlFirstLocalTransformed { get; set; }
/// <summary> World position for first control (inbound)</summary>
Vector3 ControlFirstWorld { get; set; }
/// <summary> Local position for second control (outbound). It's relative to point's position, all transformations are ignored</summary>
Vector3 ControlSecondLocal { get; set; }
/// <summary> Local position for second control (outbound). It's relative to point's position with all transformations applied</summary>
Vector3 ControlSecondLocalTransformed { get; set; }
/// <summary> World position for second control (outbound)</summary>
Vector3 ControlSecondWorld { get; set; }
/// <summary> Point's controls type.</summary>
BGCurvePoint.ControlTypeEnum ControlType { get; set; }
/// <summary> Use this transform as point's position.</summary>
Transform PointTransform { get; set; }
//====================================================================
// custom fields
//====================================================================
// we need overriden getters/setters for structs/primitives to avoid boxing/unboxing
//------------------------------- Getters
/// <summary> Get custom field value.</summary>
T GetField<T>(string name);
/// <summary> Get custom field value.</summary>
object GetField(string name, Type type);
/// <summary> Get float custom field value.</summary>
float GetFloat(string name);
/// <summary> Get bool custom field value.</summary>
bool GetBool(string name);
/// <summary> Get int custom field value.</summary>
int GetInt(string name);
/// <summary> Get Vector3 custom field value.</summary>
Vector3 GetVector3(string name);
/// <summary> Get Quaternion custom field value.</summary>
Quaternion GetQuaternion(string name);
/// <summary> Get Bounds custom field value.</summary>
Bounds GetBounds(string name);
/// <summary> Get Color custom field value.</summary>
Color GetColor(string name);
//------------------------------- Setters
/// <summary> Set custom field value.</summary>
void SetField<T>(string name, T value);
/// <summary> Set custom field value.</summary>
void SetField(string name, object value, Type type);
/// <summary> Set float custom field value.</summary>
void SetFloat(string name, float value);
/// <summary> Set bool custom field value.</summary>
void SetBool(string name, bool value);
/// <summary> Set int custom field value.</summary>
void SetInt(string name, int value);
/// <summary> Set Vector3 custom field value.</summary>
void SetVector3(string name, Vector3 value);
/// <summary> Set Quaternion custom field value.</summary>
void SetQuaternion(string name, Quaternion value);
/// <summary> Set Bounds custom field value.</summary>
void SetBounds(string name, Bounds value);
/// <summary> Set Color custom field value.</summary>
void SetColor(string name, Color value);
}
}