Exemple #1
0
    /// <summary>
    /// Method to display data information (labels etc) within the UI.
    /// </summary>
    /// <param name="fpl">List of Frequency Points representing the data of the selected Time Slice in the 3D Radar Chart.</param>
    private void updateDisplayForFrequencyPointList(List <TDRCFrequencyPoint> fpl)
    {
        // clear UI
        foreach (Transform t in labelsRef)
        {
            GameObject.Destroy(t.gameObject);
        }

        // remove assistive guidance UI elements
        if (tdrcInterface.cnfgTmSlcRdrUI_isGuidanceDisplayed)
        {
            foreach (Transform t in guidanceAxesRef)
            {
                GameObject.Destroy(t.gameObject);
            }
        }

        // iterate through all data variables (= dimensions) of the 3D Radar Chart
        for (int i = 0; i < fpl.Count; i++)
        {
            // construct individual labels for each axis
            string itemText = fpl[i].dimension + ":\n" + fpl[i].value;

            // init label and display values
            Transform item = Instantiate(Resources.Load(timeSliceRadarUILabelPrefabRef) as GameObject).transform;
            item.gameObject.SetActive(true);
            item.gameObject.name                        = itemText;
            item.GetComponent <Text>().text             = itemText;
            item.GetComponentInChildren <Image>().color = fpl[i].color;

            // assign parent GameObject
            item.SetParent(labelsRef, false);

            // reset position and scale (after attachment to parent GameObject)
            item.localPosition = Vector3.zero;
            item.localScale    = Vector3.one;

            // set position
            float   angle         = (360.0f / fpl.Count * i * -1.0f) + 90.0f;
            Vector2 rotatedVector = TDRCTimeSliceRenderer.RotateVector(new Vector2(0.0f, 220.0f), angle);
            item.localPosition = rotatedVector;

            // display assistive guidance UI elements
            if (tdrcInterface.cnfgTmSlcRdrUI_isGuidanceDisplayed)
            {
                Transform axis = Instantiate(Resources.Load(individualAxisPrefabRef) as GameObject).transform;
                axis.name = "TimeSliceRadarUIGuidanceIndividualAxis_" + i;
                axis.gameObject.SetActive(true);
                axis.SetParent(guidanceAxesRef, false);
                axis.localEulerAngles = new Vector3(0.0f, 0.0f, angle);
            }
        }
    }
Exemple #2
0
    /// <summary>
    /// Method to initialize all graphical user interface components to represent an ongoing time range selection (i.e., (1) a copy of the 2D Radar Chart mesh inside the 3D Radar Chart indicating the first selected index, and (2) an axis element indicating the range between the first select index and the currently select time index).
    /// </summary>
    public void initiateVisualFeedback()
    {
        // make a copy of the current Time Slice selector GameObject
        visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart = GameObject.Instantiate(tdrcInterface.interact_timeSliceGO, tdrcInterface.interact_timeSliceGO.transform.parent);
        if (visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart != null)
        {
            // set appropriate name
            visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart.name = "temp-visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart";

            // destroy its box collider (no interaction with hands needed)
            Destroy(visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart.GetComponent <BoxCollider>());

            // create a new mesh for the canvas renderer
            TDRCTimeSliceRenderer tsr = visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart.GetComponentInChildren <TDRCTimeSliceRenderer>();
            if (tsr != null)
            {
                tsr.setTDRCInterface(tdrcInterface);
                tsr.setTDRCFreqPolyManager(tdrcInterface.freqPolyManager);
                tsr.displayRadarWithColor(tdrcInterface.cnfgTmRngSlctr_visualFeedbackColor);
            }
            else
            {
                Debug.LogError("[TDRCTimeRangeSelector] Unable to acquire TDRCTimeSliceRenderer for temporary visual feedback.");
            }
        }

        // make a copy of the guidance axis GameObject
        visualFeedback_rangeSelectionAxis = GameObject.Instantiate(tdrcInterface.GetComponentInChildren <TDRCGuidanceAxis>().timeAxis.gameObject, tdrcInterface.interact_timeSliceGO.transform.parent);
        if (visualFeedback_rangeSelectionAxis != null)
        {
            // set appropriate name
            visualFeedback_rangeSelectionAxis.name = "temp-visualFeedback_rangeSelectionAxis";

            // set render material and color
            Material vfrsaMat = visualFeedback_rangeSelectionAxis.GetComponent <Renderer>().material = new Material(Shader.Find("Standard"));
            vfrsaMat.color = tdrcInterface.cnfgTmRngSlctr_visualFeedbackColor;

            // set scale properties
            visualFeedback_rangeSelectionAxis.transform.localScale = new Vector3(tdrcInterface.cnfgTmRngSlctr_axisScale, visualFeedback_rangeSelectionAxis.transform.localScale.y * 0.5f, tdrcInterface.cnfgTmRngSlctr_axisScale);

            // update position
            updateVisualFeedback(visualFeedback_timeSliceRadarRendererCopyForRangeSelectionStart.transform.localPosition.y);
        }
    }