Beispiel #1
0
    public void SelectPoint(TransferFunctionControlPointUI _controlPoint)
    {
        this.DeselectPoint();

        m_SelectedPoint = _controlPoint;

        m_ColorPicker.gameObject.SetActive(true);
        m_ColorPicker.CurrentColor = m_SelectedPoint.Color;
    }
Beispiel #2
0
    private void DeselectPoint()
    {
        if (m_SelectedPoint)
        {
            m_SelectedPoint.Deselect();

            m_SelectedPoint = null;

            m_ColorPicker.gameObject.SetActive(false);
        }
    }
Beispiel #3
0
    public void DeletePoint(TransferFunctionControlPointUI _controlPoint)
    {
        // If we are deleting the currently selected point, deselect it first
        if (m_SelectedPoint == _controlPoint)
        {
            this.DeselectPoint();
        }
        Log.Info(this, "Delete point");
        Destroy(_controlPoint.gameObject);
        m_ControlPoints.Remove(_controlPoint);

        this.Redraw();
    }
Beispiel #4
0
    private void CreatePoint(Vector2 _pointInBox, Color _color, bool _select)
    {
        TransferFunctionControlPointUI point = Instantiate(m_ControlPointPrefab, transform);

        point.GetComponent <RectTransform>().anchoredPosition = _pointInBox;
        point.name = $"Transferfunction_Control_Point";
        point.Init(this, _color, _select);

        m_ControlPoints.Add(point);

        this.Redraw();

        if (_select)
        {
            this.SelectPoint(point);
        }
    }
Beispiel #5
0
    private TransferFunction GenerateTransferFunction()
    {
        TransferFunction function = new TransferFunction();

        if (m_ControlPoints.Count > 0)
        {
            Vector2 size = m_RectTransform.sizeDelta;
            for (int i = 0; i < m_ControlPoints.Count; i++)
            {
                TransferFunctionControlPointUI controlPoint = m_ControlPoints[i];
                Transform transform = controlPoint.transform;

                // We need to normalize the x and y position
                float data  = (transform.localPosition.x + size.x / 2) / size.x;
                float alpha = (transform.localPosition.y + size.y / 2) / size.y;

                function.AddControlPoint(new TFColourControlPoint(data, controlPoint.Color));
                function.AddControlPoint(new TFAlphaControlPoint(data, alpha));

                // We create additional edge points for the first and last control point
                if (i == 0)
                {
                    function.AddControlPoint(new TFColourControlPoint(0, controlPoint.Color));
                    function.AddControlPoint(new TFAlphaControlPoint(0, alpha));
                }
                if (i == m_ControlPoints.Count - 1)
                {
                    function.AddControlPoint(new TFColourControlPoint(1, controlPoint.Color));
                    function.AddControlPoint(new TFAlphaControlPoint(1, alpha));
                }
            }
        }
        else
        {
            function.AddControlPoint(new TFColourControlPoint(0, Color.white));
            function.AddControlPoint(new TFAlphaControlPoint(0, 1));
            function.AddControlPoint(new TFColourControlPoint(1, Color.white));
            function.AddControlPoint(new TFAlphaControlPoint(1, 1));
        }

        function.GenerateTexture();

        return(function);
    }