3 using UnityEngine.EventSystems;
4 using System.Collections;
8 public class OpacitySlider : MonoBehaviour, IPointerHoverHandler, IPointerDownHandler, IPointerUpHandler
11 public GameObject gameObjectToChangeOpacity;
12 private GameObject sliderFill;
13 private float dampeningArea = 0.05f;
15 private bool sliding =
false;
20 sliderFill = transform.Find (
"Fill").gameObject;
27 PatientEventSystem.startListening(PatientEventSystem.Event.MESH_Opacity_Changed,
updateSlider);
33 PatientEventSystem.stopListening(PatientEventSystem.Event.MESH_Opacity_Changed,
updateSlider);
41 moc.changeOpactiyOfChildren (f);
47 if (gameObjectToChangeOpacity != null) {
48 float newOpacity = 0f;
49 if (gameObjectToChangeOpacity.activeSelf) {
50 MeshRenderer mr = gameObjectToChangeOpacity.GetComponentInChildren<MeshRenderer> ();
52 newOpacity = mr.material.color.a;
60 float sliderAmount = newOpacity * (1f - 2f * dampeningArea) + dampeningArea;
63 else if (newOpacity <= 0)
68 if (sliderFill != null) {
69 RectTransform fillRT = sliderFill.GetComponent<RectTransform> ();
71 RectTransform rectTF = transform.GetComponent<RectTransform> ();
73 fillRT.offsetMax =
new Vector2 (-(r.size.x - r.size.x * sliderAmount), fillRT.offsetMax.y);
81 public void OnPointerDown( PointerEventData data )
86 public void OnPointerUp( PointerEventData data )
91 public void OnPointerHover( PointerEventData data )
94 Vector2 localMousePos;
95 RectTransform rectTF = transform.GetComponent<RectTransform> ();
96 if (RectTransformUtility.ScreenPointToLocalPointInRectangle (rectTF, data.position, data.enterEventCamera, out localMousePos)) {
99 float amount = (localMousePos.x + r.size.x * 0.5f) / r.size.x;
100 float scaledAmount = amount;
101 if (amount > 1f - dampeningArea)
103 else if (amount < dampeningArea)
106 RectTransform fillRT = sliderFill.GetComponent<RectTransform> ();
107 fillRT.offsetMax =
new Vector2 ( -(r.size.x - r.size.x*scaledAmount), fillRT.offsetMax.y);
109 float resultingAmount = Mathf.Clamp ((amount - dampeningArea)/(1f-2f*dampeningArea), 0f, 1f);
void updateSlider(object obj=null)
Called if someone else changed the opacity!
void changeOpacity(float f)
Set the slider to the value of f.