using Microsoft.MixedReality.Toolkit.UI; using TMPro; using UnityEngine; public class PlotScale : BackButton { [SerializeField] GameObject scaleSlider; [SerializeField] TextMeshPro valueText; [SerializeField] GameObject lineBoldObjects; [SerializeField] GameObject lineBoldSlider; [SerializeField] TextMeshPro lineBoldTitle; [SerializeField] TextMeshPro lineBoldValue; [SerializeField] GameObject backPlate; private float lineBold; private GraphData graphData; private Vector3 defaultScale; public void Initialize(GraphData data) { setGraphData(data); if (data.getGraphNum() == 0) //直線なら { lineBoldObjects.SetActive(true); lineBoldTitle.text = "直線の太さ"; lineBoldValue.text = " "; lineBold = data.getgraphObject().transform.localScale.y; backPlate.transform.localScale = new Vector3(0.3f, 0.1f, 0.01f); backPlate.transform.localPosition = new Vector3(0, -0.02f, 0.01f); } else if(data.getGraphNum() == 1)//平面なら { lineBoldObjects.SetActive(false); lineBoldTitle.text = " "; lineBoldValue.text = " "; backPlate.transform.localScale = new Vector3(0.3f, 0.06f, 0.01f); backPlate.transform.localPosition = new Vector3(0, 0, 0.01f); }else if(data.getGraphNum() == 3) //点なら { lineBoldObjects.SetActive(false); lineBoldTitle.text = " "; lineBoldValue.text = " "; backPlate.transform.localScale = new Vector3(0.3f, 0.06f, 0.01f); backPlate.transform.localPosition = new Vector3(0, 0, 0.01f); } pressedDefaultButton(); } public void setGraphData(GraphData data) { graphData = data; defaultScale = data.getgraphObject().transform.localScale; switch (data.getGraphNum()) { case 0: valueText.text = (defaultScale.y).ToString(); break; case 1: valueText.text = (defaultScale.x).ToString(); break; case 3: valueText.text = (defaultScale.x).ToString(); break; } } public void OnValueUpdated(SliderEventData eventData) { /*対数目盛を使用 * スライダー:0->1 * 3倍:0->3 * 指数へ:10^0 -> 10^3 * * 点の場合は * 線の太さと同様 * * ->いずれユーザーから設定できるように。。。? * そこまでしなくていいか */ if (eventData.Slider.name.Equals("ScaleController")) { switch (graphData.getGraphNum()) { case 0: float tmpXY = graphData.getgraphObject().transform.localScale.x; graphData.getgraphObject().transform.localScale = new Vector3(tmpXY, Mathf.Pow(10, eventData.NewValue * 3), tmpXY); valueText.text = Mathf.Pow(10, eventData.NewValue * 3).ToString("F4"); break; case 1: float tmpY = graphData.getgraphObject().transform.localScale.y; graphData.getgraphObject().transform.localScale = new Vector3(Mathf.Pow(10, eventData.NewValue * 3), tmpY, Mathf.Pow(10, eventData.NewValue * 3)); valueText.text = Mathf.Pow(10, eventData.NewValue * 3).ToString("F4"); break; case 3: float tmp = graphData.getgraphObject().transform.localScale.x; float f = Mathf.Pow(2, eventData.NewValue) - 0.9999f; graphData.getgraphObject().transform.localScale = new Vector3(f,f,f); valueText.text = (Mathf.Pow(2, eventData.NewValue) - 0.9999f).ToString("F4"); break; } } else if (eventData.Slider.name.Equals("LineBoldController")) { /*対数目盛使用 * 0->1 * 2^0 - 0.999 -> 2^1 -0.999 */ float tmpY = graphData.getgraphObject().transform.localScale.y; lineBold = Mathf.Pow(2,eventData.NewValue) -0.9999f ; graphData.getgraphObject().transform.localScale = new Vector3(lineBold, tmpY ,lineBold); lineBoldValue.text = lineBold.ToString("F4"); } } public void pressedDefaultButton() { graphData.getgraphObject().transform.localScale = defaultScale; float mainSliderDefaultValue; float lineBoldDefaultValue; switch (graphData.getGraphNum()) { case 0: //直線 mainSliderDefaultValue = Mathf.Log10(defaultScale.y) / 3; lineBoldDefaultValue = Mathf.Log10(defaultScale.x + +0.9999f) / Mathf.Log10(2); scaleSlider.GetComponent<PinchSlider>().SliderValue = mainSliderDefaultValue; lineBoldSlider.GetComponent<PinchSlider>().SliderValue = lineBoldDefaultValue; valueText.text = mainSliderDefaultValue.ToString("F4"); lineBoldValue.text = lineBoldDefaultValue.ToString("F4"); break; case 1: //平面 mainSliderDefaultValue = Mathf.Log10(defaultScale.x) / 3; scaleSlider.GetComponent<PinchSlider>().SliderValue = mainSliderDefaultValue; valueText.text = mainSliderDefaultValue.ToString("F4"); break; case 3: //点 mainSliderDefaultValue = Mathf.Log10(defaultScale.x + +0.9999f) / Mathf.Log10(2); ; scaleSlider.GetComponent<PinchSlider>().SliderValue = Mathf.Log10(defaultScale.x + +0.9999f) / Mathf.Log10(2); ; valueText.text = mainSliderDefaultValue.ToString("F4"); break; } } }