private void ProbeColorMap() { laserLine.enabled = false; probeText.transform.parent.gameObject.transform.rotation = Quaternion.LookRotation(imageTarget.transform.position - Camera.main.transform.position); if (!CheckColorMap()) { probeText.text = invalidColorMapProbe; toolTitleText.text = invalidColorMapTitle; return; } colorMap = globe.CurrentLayer.Colormap; toolTitleText.text = colorMap.title + " Color Map"; toolSlider.maxValue = colorMap.max; toolSlider.minValue = colorMap.min; RaycastHit hit; if (!Physics.Raycast(imageTarget.transform.position + imageTarget.transform.up * 0.1f, -imageTarget.transform.up, out hit) || !markerTrackable.tracked) { return; } Renderer rend = hit.transform.GetComponent <Renderer>(); MeshCollider meshCollider = hit.collider as MeshCollider; Texture2D tex = rend.material.GetTexture("_NewTex") as Texture2D; laserLine.enabled = true; laserLine.SetPosition(0, transform.position + transform.up * 0.01f); laserLine.SetPosition(1, hit.point); if (tex == null) { return; } Vector2 pixelUV = hit.textureCoord; pixelUV.x *= tex.width * hit.collider.gameObject.GetComponent <Renderer>().material.GetTextureScale("_NewTex").x; pixelUV.y *= tex.height * hit.collider.gameObject.GetComponent <Renderer>().material.GetTextureScale("_NewTex").y; pixelUV.x += tex.width * hit.collider.gameObject.GetComponent <Renderer>().material.GetTextureOffset("_NewTex").x; pixelUV.y += tex.height * hit.collider.gameObject.GetComponent <Renderer>().material.GetTextureOffset("_NewTex").y; Color colorSelect = tex.GetPixel((int)pixelUV.x, (int)pixelUV.y); Vector3 color = new Vector3(colorSelect.r, colorSelect.g, colorSelect.b) * 255; DataRange colorRange = colorMap.GetRange(color); laserLine.material.color = colorSelect; SetProbeColor(new Color(colorSelect.r, colorSelect.g, colorSelect.b)); toolSlider.value = (colorRange.max + colorRange.min) / 2; probeText.text = Mathf.Round(colorRange.min).ToString() + " - " + Mathf.Round(colorRange.max).ToString() + " " + colorMap.units; }