예제 #1
0
        protected void UpdateAxisLength(IATKDimension dimension)
        {
            switch (dimension)
            {
            case IATKDimension.X:
                if (XAxis != null)
                {
                    XAxis.UpdateLength(Scale.x);
                }
                break;

            case IATKDimension.Y:
                if (YAxis != null)
                {
                    YAxis.UpdateLength(Scale.y);
                }
                break;

            case IATKDimension.Z:
                if (ZAxis != null)
                {
                    ZAxis.UpdateLength(Scale.z);
                }
                break;
            }
        }
예제 #2
0
        protected void DestroyAxis(IATKDimension dimension)
        {
            switch (dimension)
            {
            case IATKDimension.X:
                if (XAxis != null)
                {
                    Destroy(XAxis.gameObject);
                    XAxis = null;
                }
                return;

            case IATKDimension.Y:
                if (YAxis != null)
                {
                    Destroy(YAxis.gameObject);
                    YAxis = null;
                }
                return;

            case IATKDimension.Z:
                if (ZAxis != null)
                {
                    Destroy(ZAxis.gameObject);
                    ZAxis = null;
                }
                return;
            }
        }
예제 #3
0
        protected Axis CreateAxis(IATKDimension dimension)
        {
            GameObject axisHolder;

            axisHolder = (GameObject)Instantiate(Resources.Load("NewAxis"));
            axisHolder.transform.parent        = transform;
            axisHolder.transform.localPosition = Vector3.zero;
            axisHolder.transform.localRotation = Quaternion.identity;

            Axis axis = axisHolder.GetComponent <Axis>();

            switch (dimension)
            {
            case IATKDimension.X:
                axis.Initialise(this, XDimension, dimension);
                XAxis = axis;
                break;

            case IATKDimension.Y:
                axis.Initialise(this, YDimension, dimension);
                YAxis = axis;
                break;

            case IATKDimension.Z:
                axis.Initialise(this, ZDimension, dimension);
                ZAxis = axis;
                break;
            }
            return(axis);
        }
예제 #4
0
        protected void UpdateAxisDimensionAndRanges(IATKDimension dimension)
        {
            Axis            axis            = null;
            AttributeFilter attributeFilter = null;

            switch (dimension)
            {
            case IATKDimension.X:
                axis            = XAxis;
                attributeFilter = XDimension;
                break;

            case IATKDimension.Y:
                axis            = YAxis;
                attributeFilter = YDimension;
                break;

            case IATKDimension.Z:
                axis            = ZAxis;
                attributeFilter = ZDimension;
                break;
            }

            if (axis == null || attributeFilter.Name == "Undefined")
            {
                return;
            }

            axis.UpdateAttribute(attributeFilter);
            axis.UpdateMinFilter(attributeFilter.MinFilter);
            axis.UpdateMaxFilter(attributeFilter.MaxFilter);
            axis.UpdateMinNormaliser(attributeFilter.MinScale);
            axis.UpdateMaxNormaliser(attributeFilter.MaxScale);
        }
예제 #5
0
        public void SetUVs(float value, IATKDimension dimension, int channel = 0)
        {
            for (int i = 0; i < UV0.Length; i++)
            {
                UV0[i][(int)dimension] = value;
            }

            viewMesh.SetUVs(channel, UV0);
        }
예제 #6
0
        public void SetVertices(float[] values, IATKDimension dimension)
        {
            int dim = (int)dimension;

            for (int i = 0; i < values.Length; i++)
            {
                Vertices[i][dim] = values[i];
            }
            UpdatedMeshProperties.Add(MeshProperties.Vertices);
        }
예제 #7
0
 public void SetVertices(float[] values, IATKDimension dimension)
 {
     // Set the now outdated vertices to the UV1 channel
     viewMesh.SetUVs(1, Vertices);
     // Set new vertices
     for (int i = 0; i < values.Length; i++)
     {
         Vertices[i][(int)dimension] = values[i];
     }
     viewMesh.SetVertices(Vertices);
     viewMesh.RecalculateBounds();
 }
예제 #8
0
파일: Axis.cs 프로젝트: benjaminchlee/IATK
        public void Initialise(AbstractView abstractView, DataAttribute attribute, IATKDimension dimension)
        {
            AbstractView = abstractView;
            DataSource   = abstractView.DataSource;
            Attribute    = attribute;

            SetDirection(dimension);
            attributeLabel.text = Attribute.Name;
            UpdateTickLabels();

            axisTickLabelPrefab.SetActive(false);
        }
예제 #9
0
파일: Axis.cs 프로젝트: benjaminchlee/IATK
        private void SetDirection(IATKDimension dimension)
        {
            Dimension = dimension;

            switch (Dimension)
            {
            case IATKDimension.X:
                // Fix the alignment of the axis tick labels
                foreach (Transform child in axisTickLabelHolder.GetComponentsInChildren <Transform>(true))
                {
                    if (child.gameObject.name.Contains("Text"))
                    {
                        TextMeshPro labelText = child.GetComponent <TextMeshPro>();
                        labelText.alignment = TextAlignmentOptions.MidlineLeft;
                        labelText.GetComponent <RectTransform>().pivot = new Vector2(0, 0.5f);
                    }
                    else if (child.gameObject.name.Contains("Tick"))
                    {
                        SetXLocalPosition(child, -child.localPosition.x);
                    }
                }
                transform.localEulerAngles = new Vector3(0, 0, -90);
                SetXLocalPosition(axisTickLabelHolder.transform, 0);
                attributeLabel.alignment = TextAlignmentOptions.Top;
                attributeLabel.GetComponent <RectTransform>().pivot = new Vector2(0.5f, 0.5f);
                break;

            case IATKDimension.Y:
                transform.localEulerAngles = new Vector3(0, 0, 0);
                SetXLocalPosition(minNormaliserObject, -minNormaliserObject.transform.localPosition.x);
                SetXLocalPosition(maxNormaliserObject, -maxNormaliserObject.transform.localPosition.x);
                minNormaliserObject.localEulerAngles = new Vector3(90, 90, 0);
                maxNormaliserObject.localEulerAngles = new Vector3(90, 90, 0);
                break;

            case IATKDimension.Z:
                transform.localEulerAngles = new Vector3(90, 0, 0);
                SetXLocalPosition(minNormaliserObject, -minNormaliserObject.transform.localPosition.x);
                SetXLocalPosition(maxNormaliserObject, -maxNormaliserObject.transform.localPosition.x);
                minNormaliserObject.localEulerAngles = new Vector3(90, 90, 0);
                maxNormaliserObject.localEulerAngles = new Vector3(90, 90, 0);
                break;
            }
        }
예제 #10
0
        private void UpdateAxes(IATKProperty property)
        {
            if (dataAttributes.TryGetValue(property, out DataAttribute dataAttribute) && dataAttribute.DataType != IATKDataType.Translate)
            {
                if (!dataAxes.TryGetValue(property, out Axis axis))
                {
                    GameObject axisHolder = (GameObject)Instantiate(Resources.Load("NewerAxis"));
                    axisHolder.transform.parent        = transform;
                    axisHolder.transform.localPosition = Vector3.zero;
                    axisHolder.transform.localRotation = Quaternion.identity;
                    axis = axisHolder.GetComponent <Axis>();

                    IATKDimension dimension = (property == IATKProperty.X) ? IATKDimension.X : (property == IATKProperty.Y) ? IATKDimension.Y : IATKDimension.Z;
                    axis.Initialise(this, dataAttribute, dimension);
                    dataAxes.Add(property, axis);
                }
                else
                {
                    axis.UpdateAttribute(dataAttribute);
                }

                if (property == IATKProperty.X)
                {
                    axis.UpdateLength(geometry.transform.localScale.x);
                }
                else if (property == IATKProperty.Y)
                {
                    axis.UpdateLength(geometry.transform.localScale.y);
                }
                else if (property == IATKProperty.Z)
                {
                    axis.UpdateLength(geometry.transform.localScale.z);
                }
            }
            else
            {
                if (dataAxes.TryGetValue(property, out Axis axis))
                {
                    Destroy(axis.gameObject);
                    dataAxes.Remove(property);
                }
            }
        }
예제 #11
0
        public void SetUVs(float value, IATKDimension dimension, int channel = 0)
        {
            int dim = (int)dimension;

            switch (channel)
            {
            case 0:
                for (int i = 0; i < UV0.Length; i++)
                {
                    UV0[i][dim] = value;
                }
                UpdatedMeshProperties.Add(MeshProperties.UV0);
                break;

            case 1:
                for (int i = 0; i < UV1.Length; i++)
                {
                    UV1[i][dim] = value;
                }
                UpdatedMeshProperties.Add(MeshProperties.UV1);
                break;

            case 2:
                for (int i = 0; i < UV2.Length; i++)
                {
                    UV2[i][dim] = value;
                }
                UpdatedMeshProperties.Add(MeshProperties.UV2);
                break;

            case 3:
                for (int i = 0; i < UV3.Length; i++)
                {
                    UV3[i][dim] = value;
                }
                UpdatedMeshProperties.Add(MeshProperties.UV3);
                break;
            }
        }