using BarGraph.VittorCloud; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Graph.VittorCloud { public class GraphBox : MonoBehaviour { #region publicVariables public GameObject XAxis, YAxis, ZAxis; public GraphPoint XPoint, YPoint, ZPoint; public GameObject XYPlane, XZPlane, YZPlane; public GameObject barParent; public float planeSizeOffset = 1; public GameObject horizontalGroup; #endregion #region privateVariables protected List ListOfXPoint; protected List ListOfYPoints; protected List ListOfZPoints; public List ListOfGroups; protected float XpointCount; protected float YpointCount; protected float ZpointCount; protected float graphScaleFactor; float XLength; float YLength; float ZLength; float xOffset; float yOffset; float zOffset; #endregion #region UnityCallBacks // Start is called before the first frame update public void Awake() { ListOfXPoint = new List(); ListOfYPoints = new List(); ListOfZPoints = new List(); ListOfGroups = new List(); } // Update is called once per frame void Update() { } #endregion #region CustomeGraphBehaviours public void setBarScale(float scaleFactorvalue) { graphScaleFactor = scaleFactorvalue; } public void InitGraphBox(float xLength, float yLength, float zLength, float xSegment, float ySegment, float zSegment) { XLength = xLength; YLength = yLength; ZLength = zLength; xOffset = xSegment == 0 ? XLength : xSegment; yOffset = ySegment == 0 ? YLength : ySegment; zOffset = zSegment == 0 ? ZLength : zSegment; XYPlane.transform.localScale = new Vector3(XLength + xOffset, YLength + yOffset, XYPlane.transform.localScale.z); XZPlane.transform.localScale = new Vector3(XLength + xOffset, XZPlane.transform.localScale.y, ZLength + zOffset); YZPlane.transform.localScale = new Vector3(YZPlane.transform.localScale.x, YLength + yOffset, ZLength + zOffset); barParent.transform.rotation = transform.rotation; ////gameObject.AddComponent(); } public void InitXAxis(int xMaxSize, float xStart, float xSegment, float xRowOffset) { XAxis.transform.localScale = new Vector3(XLength + xSegment, XAxis.transform.localScale.y, XAxis.transform.localScale.z); if (xSegment == 0) { XpointCount = xMaxSize; } else { XpointCount = ((XLength - xStart) / xSegment) + 1; } for (int i = 0; i < XpointCount; i++) { float distance = 1; Vector3 pos; if (i == 0) { distance = xStart; pos = transform.localPosition + new Vector3(distance, 0, 0); } else { distance = xSegment; pos = ListOfXPoint[i - 1].transform.localPosition + new Vector3(distance, 0, 0); } GraphPoint temp = Instantiate(XPoint, transform.position, transform.rotation); temp.transform.parent = transform; temp.transform.localPosition = pos; temp.transform.localScale = temp.transform.localScale * graphScaleFactor; temp.labelContainer.localPosition= new Vector3(0, 0, -(ZLength + (1.8f * zOffset)))/ graphScaleFactor; ListOfXPoint.Add(temp); } } public void InitYAxis(int yMaxSize, float yStart, float ySegment) { YAxis.transform.localScale = new Vector3(YAxis.transform.localScale.x, YLength + ySegment, YAxis.transform.localScale.z); YpointCount = ((YLength - yStart) / ySegment) + 1; for (int i = 0; i < YpointCount; i++) { float distance = 1; Vector3 pos; if (i == 0) { distance = yStart; pos = transform.localPosition + new Vector3(0, distance, 0); } else { distance = ySegment; pos = ListOfYPoints[i - 1].transform.localPosition + new Vector3(0, distance, 0); } GraphPoint temp = Instantiate(YPoint, transform.localPosition, transform.rotation); temp.transform.parent = transform; temp.transform.localPosition = pos; temp.transform.localScale = temp.transform.localScale * graphScaleFactor; temp.labelContainer.localPosition = new Vector3(XLength+ (1.8f*xOffset), 0, 0) / graphScaleFactor; ListOfYPoints.Add(temp); } } public void InitZAxis(int zMaxSize, float zStart, float zSegment, float zRowOffset, float xStart, float xSegment) { ZAxis.transform.localScale = new Vector3(ZAxis.transform.localScale.x, ZAxis.transform.localScale.y, ZLength + zSegment); if (zSegment == 0) { ZpointCount = zMaxSize; } else { ZpointCount = ((ZLength - zStart) / zSegment) + 1; } for (int i = 0; i < ZpointCount; i++) { float distance = 1; Vector3 pos; if (i == 0) { distance = zStart; pos = transform.localPosition + new Vector3(0, 0, -distance); } else { distance = zSegment; pos = ListOfZPoints[i - 1].transform.localPosition + new Vector3(0, 0, -distance); } GraphPoint temp = Instantiate(ZPoint, transform.position, transform.rotation); temp.transform.parent = transform; temp.transform.localPosition = pos; temp.transform.localScale = temp.transform.localScale * graphScaleFactor; temp.labelContainer.localPosition = temp.labelContainer.localPosition = new Vector3(XLength + (1.8f * xOffset), 0, 0)/ graphScaleFactor; ListOfZPoints.Add(temp); GameObject grouptemp = GameObject.Instantiate(horizontalGroup, transform.position, transform.rotation); grouptemp.transform.parent = barParent.transform; grouptemp.transform.localPosition = pos + new Vector3((zRowOffset * i), 0, 0); grouptemp.GetComponent().sizeDelta = new Vector2(XLength, YLength); grouptemp.GetComponent().padding.left = (int)xStart; grouptemp.GetComponent().spacing = (int)xSegment; grouptemp.transform.localScale = Vector3.one; ListOfGroups.Add(grouptemp.GetComponent()); // Debug.Log("count incremented =======" + ListOfGroups.Count); } } public void AssignAxisName(int xIndex, int zIndex, string xValue, string zValue) { ListOfZPoints[zIndex].labelText = zValue; ListOfXPoint[xIndex].labelText = xValue.ToString(); } public void FetchYPointValues(int ymin, int ymax) { //Debug.Log("Final values min max " + ymin + " , " + ymax); float range = ymax - ymin; //Debug.Log("range & YpointCount" + range + " , " + YpointCount); float offset = range / YpointCount; //Debug.Log("offset " + offset); float value = ymin; for (int i = 0; i < ListOfYPoints.Count; i++) { value += offset; ListOfYPoints[i].labelText = value.ToString(); //Debug.Log("value " + value); } } public void FetchXPointValues(int xmin, int xmax) { //Debug.Log("Final values min max " + ymin + " , " + ymax); float range = xmax - xmin; //Debug.Log("range & YpointCount" + range + " , " + YpointCount); float offset = range / XpointCount; //Debug.Log("offset " + offset); float value = xmin; for (int i = 0; i < ListOfXPoint.Count; i++) { value += offset; ListOfXPoint[i].labelText = value.ToString(); //Debug.Log("value " + value); } } public void FetchZPointValues(int zmin, int zmax) { //Debug.Log("Final values min max " + ymin + " , " + ymax); float range = zmax - zmin; //Debug.Log("range & YpointCount" + range + " , " + YpointCount); float offset = range / ZpointCount; //Debug.Log("offset " + offset); float value = zmin; for (int i = 0; i < ListOfZPoints.Count; i++) { value += offset; ListOfZPoints[i].labelText = value.ToString(); //Debug.Log("value " + value); } } #endregion } }