235 lines
6.8 KiB
C#
235 lines
6.8 KiB
C#
#define Graph_And_Chart_PRO
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using ChartAndGraph.Axis;
|
|
using UnityEngine;
|
|
|
|
namespace ChartAndGraph
|
|
{
|
|
public class WorldSpaceBarChart : BarChart
|
|
{
|
|
/// <summary>
|
|
/// If this value is set all the text in the chart will be rendered to this specific camera. otherwise text is rendered to the main camera
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("If this value is set all the text in the chart will be rendered to this specific camera. otherwise text is rendered to the main camera")]
|
|
private Camera textCamera;
|
|
|
|
/// <summary>
|
|
/// If this value is set all the text in the chart will be rendered to this specific camera. otherwise text is rendered to the main camera
|
|
/// </summary>
|
|
public Camera TextCamera
|
|
{
|
|
get { return textCamera; }
|
|
set
|
|
{
|
|
textCamera = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
|
|
public override bool IsCanvas
|
|
{
|
|
get
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// The distance from the camera at which the text is at it's original size.
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("The distance from the camera at which the text is at it's original size")]
|
|
private float textIdleDistance = 20f;
|
|
|
|
/// <summary>
|
|
/// The distance from the camera at which the text is at it's original size.
|
|
/// </summary>
|
|
public float TextIdleDistance
|
|
{
|
|
get { return textIdleDistance; }
|
|
set
|
|
{
|
|
textIdleDistance = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// prefab for all the bar elements of the chart. must be one unit size and with a bottom middle pivot
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("prefab for all the bar elements of the chart. must be one unit size and with a bottom middle pivot")]
|
|
private GameObject barPrefab;
|
|
|
|
/// <summary>
|
|
/// prefab for all the bar elements of the chart. must be one unit size and with a bottom middle pivot
|
|
/// </summary>
|
|
public GameObject BarPrefab
|
|
{
|
|
get
|
|
{
|
|
return barPrefab;
|
|
}
|
|
set
|
|
{
|
|
barPrefab = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// The seperation between the axis and the chart bars.
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("The seperation between the axis and the chart bars")]
|
|
private ChartOrientedSize AxisSeperation = new ChartOrientedSize();
|
|
|
|
/// <summary>
|
|
/// The seperation between the axis and the chart bars
|
|
/// </summary>
|
|
public ChartOrientedSize axisSeperation
|
|
{
|
|
get { return AxisSeperation; }
|
|
set
|
|
{
|
|
AxisSeperation = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// The seperation between bars of the same group.
|
|
/// Use cases:
|
|
/// 1. set the depth to 0 to make each group look more 2d.
|
|
/// 2. set the breadth to 0 to make align the bars of each group along the z axis
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("The seperation between bars of the same group")]
|
|
private ChartOrientedSize barSeperation = new ChartOrientedSize();
|
|
|
|
/// <summary>
|
|
/// The seperation between bars of the same group.
|
|
/// Use cases:
|
|
/// 1. set the depth to 0 to make each group look more 2d.
|
|
/// 2. set the breadth to 0 to make align the bars of each group along the z axis
|
|
/// </summary>
|
|
public ChartOrientedSize BarSeperation
|
|
{
|
|
get { return barSeperation; }
|
|
set
|
|
{
|
|
barSeperation = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// The seperation between bar groups.
|
|
/// Use cases:
|
|
/// 1.set the depth to 0 for a more 2d look.
|
|
/// 2.set the breadth to 0 to align the groups on the z axis
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("seperation between bar groups")]
|
|
private ChartOrientedSize groupSeperation = new ChartOrientedSize();
|
|
|
|
/// <summary>
|
|
/// The seperation between bar groups.
|
|
/// Use cases:
|
|
/// 1.set the depth to 0 for a more 2d look.
|
|
/// 2.set the breadth to 0 to align the groups on the z axis
|
|
/// <summary>
|
|
public ChartOrientedSize GroupSeperation
|
|
{
|
|
get { return groupSeperation; }
|
|
set
|
|
{
|
|
groupSeperation = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// the size of each bar in the chart
|
|
/// </summary>
|
|
[SerializeField]
|
|
[Tooltip("the size of each bar in the chart")]
|
|
private ChartOrientedSize barSize = new ChartOrientedSize(1f, 1f);
|
|
/// <summary>
|
|
/// the size of each bar in the chart
|
|
/// </summary>
|
|
public ChartOrientedSize BarSize
|
|
{
|
|
get { return barSize; }
|
|
set
|
|
{
|
|
barSize = value;
|
|
OnPropertyUpdated();
|
|
}
|
|
}
|
|
|
|
protected override ChartOrientedSize AxisSeperationLink
|
|
{
|
|
get
|
|
{
|
|
return AxisSeperation;
|
|
}
|
|
}
|
|
|
|
protected override ChartOrientedSize BarSeperationLink
|
|
{
|
|
get
|
|
{
|
|
return BarSeperation;
|
|
}
|
|
}
|
|
protected override ChartOrientedSize GroupSeperationLink
|
|
{
|
|
get
|
|
{
|
|
return GroupSeperation;
|
|
}
|
|
}
|
|
protected override ChartOrientedSize BarSizeLink
|
|
{
|
|
get
|
|
{
|
|
return BarSize;
|
|
}
|
|
}
|
|
protected override Camera TextCameraLink
|
|
{
|
|
get
|
|
{
|
|
return TextCamera;
|
|
}
|
|
}
|
|
|
|
protected override float TextIdleDistanceLink
|
|
{
|
|
get
|
|
{
|
|
return TextIdleDistance;
|
|
}
|
|
}
|
|
|
|
protected override GameObject BarPrefabLink
|
|
{
|
|
get
|
|
{
|
|
return BarPrefab;
|
|
}
|
|
}
|
|
protected override void ValidateProperties()
|
|
{
|
|
base.ValidateProperties();
|
|
if (barSize.Breadth < 0f)
|
|
barSize.Breadth = 0f;
|
|
if (barSize.Depth < 0f)
|
|
barSize.Depth = 0f;
|
|
}
|
|
|
|
}
|
|
}
|