void Start()
    {
        var graph = GetComponent <GraphChart>();

        var labels = GetComponent <ItemLabels>();

        if (labels != null)
        {
            fractionDigits = labels.FractionDigits;
        }
        else
        {
            fractionDigits = 2;
        }

        if (graph != null)
        {
            mChart = graph;
            graph.PointHovered.AddListener(GraphHover);
            graph.NonHovered.AddListener(NonHover);
            return;
        }

        var bar = GetComponent <CanvasBarChart>();

        if (bar != null)
        {
            mChart = bar;
            bar.BarHovered.AddListener(BarHover);
            bar.NonHovered.AddListener(NonHover);
            return;
        }

        HoverStart();
    }
Exemple #2
0
#pragma warning restore 0672

        public void FixLabels(AnyChart parent)
        {
            if (mAxis == null)
            {
                return;
            }
            if (((ChartMainDivisionInfo)mAxis.MainDivisions).Messure == ChartDivisionInfo.DivisionMessure.DataUnits)
            {
                SetAxis(mScrollOffset, mParent, mAxis, mOrientation, mIsSubDivisions);
                return;
            }
            for (int i = 0; i < mTexts.Count; i++)
            {
                BillboardText text = mTexts[i];
                double        min  = ((IInternalUse)parent).InternalMinValue(mAxis);
                double        max  = ((IInternalUse)parent).InternalMaxValue(mAxis);
                if (text.UserData is AxisBase.TextData)
                {
                    AxisBase.TextData data   = (AxisBase.TextData)text.UserData;
                    double            newVal = min * (1.0 - (double)data.interp) + max * (double)data.interp;
                    string            toSet  = "";
                    if (mAxis.Format == AxisFormat.Number)
                    {
                        toSet = ChartAdancedSettings.Instance.FormatFractionDigits(data.fractionDigits, (float)newVal, parent.CustomNumberFormat);
                    }
                    else
                    {
                        DateTime date = ChartDateUtility.ValueToDate(newVal);
                        if (mAxis.Format == AxisFormat.DateTime)
                        {
                            toSet = ChartDateUtility.DateToDateTimeString(date, parent.CustomDateTimeFormat);
                        }
                        else
                        {
                            if (mAxis.Format == AxisFormat.Date)
                            {
                                toSet = ChartDateUtility.DateToDateString(date);
                            }
                            else
                            {
                                toSet = ChartDateUtility.DateToTimeString(date);
                            }
                        }
                    }
                    toSet = data.info.TextPrefix + toSet + data.info.TextSuffix;
                    ChartCommon.UpdateTextParams(text.UIText, toSet);
                }
            }
        }
        /// <summary>
        /// used internally to get the tiling for a chart axis division
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="orientation"></param>
        /// <param name="inf"></param>
        /// <returns></returns>
        float GetTiling(AnyChart parent, ChartOrientation orientation, ChartDivisionInfo inf)
        {
            MaterialTiling tiling = inf.MaterialTiling;

            if (tiling.EnableTiling == false || tiling.TileFactor <= 0f)
            {
                return(1f);
            }
            float length     = Math.Abs(ChartCommon.GetAutoLength(parent, orientation, inf));
            float backLength = ChartCommon.GetAutoLength(parent, orientation);
            float depth      = ChartCommon.GetAutoDepth(parent, orientation, inf);

            if (inf.MarkBackLength.Automatic == false)
            {
                backLength = inf.MarkBackLength.Value;
            }
            if (backLength != 0 && depth > 0)
            {
                length += Math.Abs(backLength) + Math.Abs(depth);
            }
            return(length / tiling.TileFactor);
        }
Exemple #4
0
        public void SetAxis(double scrollOffset, AnyChart parent, AxisBase axis, ChartOrientation axisOrientation, bool isSubDivisions)
        {
            mScrollOffset   = scrollOffset;
            raycastTarget   = false;
            color           = Color.white;
            mAxis           = axis;
            mParent         = parent;
            mIsSubDivisions = isSubDivisions;
            mOrientation    = axisOrientation;

            if (mMesh == null)
            {
                mMesh             = new CanvasChartMesh(true);
                mMesh.RecycleText = true;
            }
            mMesh.Clear();

            if (isSubDivisions)
            {
                mAxis.AddMainDivisionToChartMesh(mScrollOffset, mParent, transform, mMesh, mOrientation);
            }
            else
            {
                mAxis.AddSubdivisionToChartMesh(mScrollOffset, mParent, transform, mMesh, mOrientation);
            }

            mTexts = mMesh.CurrentTextObjects;
            if (mMesh.TextObjects != null)
            {
                foreach (BillboardText text in mMesh.TextObjects)
                {
                    ((IInternalUse)parent).InternalTextController.AddText(text);
                }
            }

            canvasRenderer.materialCount = 1;
            if (mDispose != null)
            {
                ChartCommon.SafeDestroy(mDispose);
            }

            float tiling = 1f;

            if (!isSubDivisions)
            {
                if (axis.SubDivisions.Material != null)
                {
                    mMaterial          = axis.SubDivisions.Material;
                    mDispose           = new Material(mMaterial);
                    mDispose.hideFlags = HideFlags.DontSave;
                    material           = mDispose;
                    tiling             = GetTiling(axis.SubDivisions.MaterialTiling);
                }
            }
            else
            {
                if (axis.MainDivisions.Material != null)
                {
                    mMaterial          = axis.MainDivisions.Material;
                    mDispose           = new Material(mMaterial);
                    mDispose.hideFlags = HideFlags.DontSave;
                    material           = mDispose;
                    tiling             = GetTiling(axis.MainDivisions.MaterialTiling);
                }
            }
            mTiling = tiling;
            if (mDispose != null)
            {
                if (mDispose.HasProperty("_ChartTiling"))
                {
                    mDispose.SetFloat("_ChartTiling", tiling);
                }
            }
            SetAllDirty();
            Rebuild(CanvasUpdate.PreRender);
            mMesh.DestoryRecycled();
        }
        /// <summary>
        /// sets the axis settings. Calling this method will cause the axisgenerator to create the axis mesh
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="axis"></param>
        /// <param name="axisOrientation"></param>
        /// <param name="isSubDivisions"></param>
        public void SetAxis(double scrollOffset, AnyChart parent, AxisBase axis, ChartOrientation axisOrientation, bool isSubDivisions)
        {
            mScroll        = scrollOffset;
            mParent        = parent;
            mAxis          = axis;
            mOrientation   = axisOrientation;
            mIsSubDivision = isSubDivisions;
            if (mMesh == null)
            {
                mMesh             = new WorldSpaceChartMesh(2);
                mMesh.RecycleText = true;
            }

            mMesh.Clear();
            mMesh.Orientation = axisOrientation;
            mAxis             = axis;
            if (isSubDivisions)
            {
                axis.AddSubdivisionToChartMesh(scrollOffset, parent, transform, mMesh, axisOrientation);
            }
            else
            {
                axis.AddMainDivisionToChartMesh(scrollOffset, parent, transform, mMesh, axisOrientation);
            }
            if (mMesh.TextObjects != null)
            {
                foreach (BillboardText text in mMesh.TextObjects)
                {
                    ((IInternalUse)parent).InternalTextController.AddText(text);
                }
            }
            mTexts = mMesh.CurrentTextObjects;

            Mesh newMesh = mMesh.Generate(mCreated);

            mCreated          = newMesh;
            newMesh.hideFlags = HideFlags.DontSave;
            if (mFilter == null)
            {
                mFilter = GetComponent <MeshFilter>();
            }
            mFilter.sharedMesh = newMesh;
            MeshCollider collider = GetComponent <MeshCollider>();

            if (collider != null)
            {
                collider.sharedMesh = newMesh;
            }
            ChartCommon.CleanMesh(newMesh, ref mCleanMesh);

            MeshRenderer renderer = GetComponent <MeshRenderer>();

            if (renderer != null)
            {
                Material m      = mAxis.MainDivisions.Material;
                float    tiling = GetTiling(parent, axisOrientation, mAxis.MainDivisions);
                if (isSubDivisions)
                {
                    m      = mAxis.SubDivisions.Material;
                    tiling = GetTiling(parent, axisOrientation, mAxis.SubDivisions);
                }
                mMaterial = m;
                if (m != null)
                {
                    ChartCommon.SafeDestroy(mDispose);
                    mDispose                = new Material(m);
                    mDispose.hideFlags      = HideFlags.DontSave;
                    renderer.sharedMaterial = mDispose;
                    mTiling = tiling;
                    if (mDispose.HasProperty("_ChartTiling"))
                    {
                        mDispose.SetFloat("_ChartTiling", mTiling);
                    }
                }
            }
            mMesh.DestoryRecycled();
        }
 partial void InnerSetAxis(double scrollOffset, AnyChart parent, AxisBase axis, ChartOrientation axisOrientation, bool isSubDivisions);
 partial void InnerFixLabels(AnyChart parent);
 public void SetAxis(double scrollOffset, AnyChart parent, AxisBase axis, ChartOrientation axisOrientation, bool isSubDivisions)
 {
     InnerSetAxis(scrollOffset, parent, axis, axisOrientation, isSubDivisions);
 }
 public void FixLabels(AnyChart parent)
 {
     InnerFixLabels(parent);
 }