// запуск общего события для контролов void OnConrolTrigger(object s, CtrlEventType et) { ControlTrigger?.Invoke(s, new ControlTriggerEventArgs() { Ctrl = (Control)s, EventType = et }); }
void OnTriggerExit(Collider other) { ControlTrigger trigger = other.transform.GetComponent <ControlTrigger>(); if (trigger != null) { grabbedState = GrabbedState.None; SetHighlightOff(); } }
void OnTriggerStay(Collider other) { ControlTrigger trigger = other.transform.GetComponent <ControlTrigger>(); if (trigger == null) { return; } if (trigger.IsPressed()) { if (grabbedState != GrabbedState.Grabbed) { offset = buttonTransform.position - other.transform.position; grabbedState = GrabbedState.Grabbed; SetHighlightGrabbed(); } } else { if (grabbedState != GrabbedState.Hovered) { grabbedState = GrabbedState.Hovered; SetHighlightHovered(); } return; } if (OnSliderMoveHanders != null) { OnSliderMoveHanders(this); } Vector3 contact = other.transform.position; Vector3 completeSlide = sliderEnd.position - sliderStart.position; Vector3 amountSlide = Vector3.Project((contact + offset) - sliderStart.position, completeSlide.normalized); float value = amountSlide.magnitude / completeSlide.magnitude; if (Vector3.Distance(sliderStart.position + amountSlide, sliderEnd.position) > Vector3.Distance(sliderStart.position, sliderEnd.position)) { value = 0; } else if (value > 1) { value = 1; } model.SetValue(value); }