void UpdateVisuals() { for (int i = 0; i < analyzer.numOfBands; i++) { float value = analyzer.GetVisualScale(i); float decayedValue = analyzer.GetVisualScaleDecayed(i); bars[i].UpdateBar(value, decayedValue); } if (Input.GetMouseButtonDown(0)) { //Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); //Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider != null && hit.collider.gameObject.tag == "knob") { knobClicked = true; knobClickedTransform = hit.collider.gameObject.transform; knobClickedTransform.gameObject.GetComponent <Renderer>().material.color = Color.red; } } } if (Input.GetMouseButtonUp(0)) { if (knobClickedTransform != null) { knobClickedTransform.gameObject.GetComponent <Renderer>().material.color = Color.grey; } knobClicked = false; knobClickedTransform = null; } if (Input.GetMouseButton(0)) { if (knobClicked) { float newYPosition = 0; Vector3 v3 = Input.mousePosition; v3.z = (Camera.main.transform.position - knobClickedTransform.position).magnitude; v3 = Camera.main.ScreenToWorldPoint(v3); newYPosition = v3.y; float minYPos = barYScale / 2; float maxYPos = barYScale * 15 - barYScale / 2; newYPosition = Mathf.Clamp(newYPosition, minYPos, maxYPos); knobClickedTransform.position = new Vector3(knobClickedTransform.position.x, newYPosition, knobClickedTransform.position.z); int i = knobClickedTransform.GetComponent <EqKnob>().id; Vector3 lrPos = new Vector3((i - analyzer.numOfBands / 2) * columnScale, newYPosition, -7f); LineRenderer lr = GetComponent <LineRenderer>(); lr.SetPosition(i, lrPos); if (filter) { filter.dbGain[i] = Mathf.Lerp(-24f, 24f, (newYPosition - minYPos) / (maxYPos - minYPos)); filter.Reprogram(); } } } }