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.
 
 
 
 
 
 

366 lines
12 KiB

using System;
using UnityEngine;
namespace BansheeGz.BGSpline.Curve
{
#if UNITY_EDITOR
// ========================== This class is supposed to work in Editor ONLY
/// <summary> Warning!! This class is for Editor ONLY. It contains curve settings </summary>
// many tooltips and range attributes are currently not used
[Serializable]
public class BGCurveSettings
{
#region Fields & enums
public enum HandlesTypeEnum
{
Configurable,
Standard,
FreeMove
}
public enum ShowCurveModeEnum
{
CurveSelected,
CurveOrParentSelected,
Always
}
//=============================================================== Curve itself
[SerializeField] [Tooltip("Hide Game Object's handles")] private bool hideHandles;
[SerializeField] [Tooltip("Distance from the camera, at which new points are created")] private float newPointDistance = 2;
[SerializeField] [Tooltip("Show curve in the scene or not. If not, all handles are disabled as well")] private bool showCurve = true;
[SerializeField] [Tooltip("Show curve mode")] private ShowCurveModeEnum showCurveMode = ShowCurveModeEnum.CurveOrParentSelected;
[SerializeField] [Range(1, 50)] [Tooltip("Number of sections between two curves points.\r\n It's used for displaying in editor only")] private int sections = 20;
[SerializeField] [Tooltip("Show Points Menu buttons in the editor (for Points tab)")] private bool showPointMenu = true;
//tangents
[SerializeField] [Tooltip("Show points tangents in the scene")] private bool showTangents;
[SerializeField] [Tooltip("Point tangent arrow size in the scene")] [Range(.3f, 2)] private float tangentsSize = .7f;
[SerializeField] [Tooltip("Point tangent color in the scene")] private Color tangentsColor = Color.white;
[SerializeField] [Range(1, 3)] [Tooltip("Number of tangents for every section")] private int tangentsPerSection = 1;
// control type for new points
[SerializeField] [Tooltip("Control type for new points")] private BGCurvePoint.ControlTypeEnum controlType;
[SerializeField] [Tooltip("Curve is drawn on top of objects")] private bool vRay;
[SerializeField] [Tooltip("Curve's color in the scene")] private Color lineColor = Color.red;
//=============================================================== Control Type field
[SerializeField] [Tooltip("Show points control types in the editor (for Points tab)")] private bool showPointControlType = true;
//=============================================================== Position field
[SerializeField] [Tooltip("Show points positions in the editor (for Points tab)")] private bool showPointPosition = true;
[SerializeField] [Tooltip("Show points handles in the scene")] private bool showHandles = true;
[SerializeField] [Tooltip("Points handles type" +
"\r\n 1)FreeMove- standard Unity freemove handles" +
"\r\n 2)Standard-standard handles" +
"\r\n 3)Configurable- configurable handles")] private HandlesTypeEnum handlesType = HandlesTypeEnum.Configurable;
[SerializeField] private SettingsForHandles handlesSettings = new SettingsForHandles();
[SerializeField] [Tooltip("Show points positions labels in the scene ")] private bool showLabels = true;
[SerializeField] [Tooltip("Point's labels color in the scene")] private Color labelColor = Color.white;
[SerializeField] [Tooltip("Show points positions in the scene")] private bool showPositions;
[SerializeField] [Tooltip("Point's labels color when selected in the scene")] private Color labelColorSelected = Color.green;
[SerializeField] [Tooltip("Show spheres at points locations in the scene")] private bool showSpheres = true;
[SerializeField] [Range(.01f, 1)] [Tooltip("Point's sphere radius in the scene")] private float sphereRadius = .1f;
[SerializeField] [Tooltip("Point's sphere color in the scene")] private Color sphereColor = Color.red;
//=============================================================== Controls fields
[SerializeField] [Tooltip("Show points controls positions in the editor (for Points tab)")] private bool showPointControlPositions = true;
[SerializeField] [Tooltip("Show points control handles in the scene")] private bool showControlHandles = true;
[SerializeField] [Tooltip("Points control handles type\r\n 1)FreeMove- standard Unity freemove handles\r\n " +
"2)Standard-standard handles\r\n 3)Configurable- configurable handles")] private HandlesTypeEnum controlHandlesType = HandlesTypeEnum.Configurable;
[SerializeField] private SettingsForHandles controlHandlesSettings = new SettingsForHandles {AxisScale = .7f, PlanesScale = .7f, Alpha = .7f};
[SerializeField] [Tooltip("Points control handles color")] private Color controlHandlesColor = Color.cyan;
[SerializeField] [Tooltip("Show points control labels in the scene ")] private bool showControlLabels = true;
[SerializeField] [Tooltip("Show points control positions in the scene")] private bool showControlPositions;
[SerializeField] [Tooltip("Control point's labels color in the scene")] private Color labelControlColor = Color.yellow;
//=============================================================== Transform field
[SerializeField] [Tooltip("Show points transform field in the editor (for Points tab)")] private bool showTransformField;
//=============================================================== Misc
[SerializeField] private bool existing;
#endregion
#region Props
public bool HideHandles
{
get { return hideHandles; }
set { hideHandles = value; }
}
public float NewPointDistance
{
get { return newPointDistance; }
set { newPointDistance = value; }
}
public bool ShowPointControlType
{
get { return showPointControlType; }
set { showPointControlType = value; }
}
public bool ShowPointPosition
{
get { return showPointPosition; }
set { showPointPosition = value; }
}
public bool ShowPointControlPositions
{
get { return showPointControlPositions; }
set { showPointControlPositions = value; }
}
public bool ShowPointMenu
{
get { return showPointMenu; }
set { showPointMenu = value; }
}
public bool ShowCurve
{
get { return showCurve; }
set { showCurve = value; }
}
public ShowCurveModeEnum ShowCurveMode
{
get { return showCurveMode; }
set { showCurveMode = value; }
}
public bool ShowHandles
{
get { return showHandles; }
set { showHandles = value; }
}
public bool ShowTangents
{
get { return showTangents; }
set { showTangents = value; }
}
public float TangentsSize
{
get { return tangentsSize; }
set { tangentsSize = value; }
}
public Color TangentsColor
{
get { return tangentsColor; }
set { tangentsColor = value; }
}
public int TangentsPerSection
{
get { return Mathf.Clamp(tangentsPerSection, 1, 3); }
set { tangentsPerSection = Mathf.Clamp(value, 1, 3); }
}
public HandlesTypeEnum HandlesType
{
get { return handlesType; }
set { handlesType = value; }
}
public SettingsForHandles HandlesSettings
{
get { return handlesSettings; }
set { handlesSettings = value; }
}
public int Sections
{
get { return Mathf.Clamp(sections, 1, 50); }
set { sections = Mathf.Clamp(value, 1, 50); }
}
public bool VRay
{
get { return vRay; }
set { vRay = value; }
}
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; }
}
public bool ShowControlHandles
{
get { return showControlHandles; }
set { showControlHandles = value; }
}
public HandlesTypeEnum ControlHandlesType
{
get { return controlHandlesType; }
set { controlHandlesType = value; }
}
public SettingsForHandles ControlHandlesSettings
{
get { return controlHandlesSettings; }
set { controlHandlesSettings = value; }
}
public Color ControlHandlesColor
{
get { return controlHandlesColor; }
set { controlHandlesColor = value; }
}
public bool ShowLabels
{
get { return showLabels; }
set { showLabels = value; }
}
public bool ShowPositions
{
get { return showPositions; }
set { showPositions = value; }
}
public bool ShowControlPositions
{
get { return showControlPositions; }
set { showControlPositions = value; }
}
public Color LabelColor
{
get { return labelColor; }
set { labelColor = value; }
}
public Color LabelColorSelected
{
get { return labelColorSelected; }
set { labelColorSelected = value; }
}
public bool ShowSpheres
{
get { return showSpheres; }
set { showSpheres = value; }
}
public float SphereRadius
{
get { return sphereRadius; }
set { sphereRadius = value; }
}
public Color SphereColor
{
get { return sphereColor; }
set { sphereColor = value; }
}
public BGCurvePoint.ControlTypeEnum ControlType
{
get { return controlType; }
set { controlType = value; }
}
public bool Existing
{
get { return existing; }
set { existing = value; }
}
public bool ShowControlLabels
{
get { return showControlLabels; }
set { showControlLabels = value; }
}
public Color LabelControlColor
{
get { return labelControlColor; }
set { labelControlColor = value; }
}
public bool ShowTransformField
{
get { return showTransformField; }
set { showTransformField = value; }
}
#endregion
#region classes
[Serializable]
public class SettingsForHandles
{
public bool RemoveX;
public bool RemoveY;
public bool RemoveZ;
public bool RemoveXZ;
public bool RemoveXY;
public bool RemoveYZ;
[Range(.5f, 1.5f)] public float AxisScale = 1;
[Range(.5f, 1.5f)] public float PlanesScale = 1;
[Range(.5f, 1f)] public float Alpha = 1;
public bool Disabled
{
get { return RemoveX && RemoveY && RemoveZ && RemoveXY && RemoveXZ && RemoveYZ; }
}
}
#endregion
}
#endif
}